问题标题:帮我看看这个怎么解决
问题内容:pythonimport osdef Modify_String_TXT(Find_String, Replace_String): path = 'F:\\' files = os.listdir(path) for file in files: file_name, file_extension = os.path.splitext(file) if file_extension == '.txt': file_path = os.path.join(path, file) with open(file_path, 'r+', encoding='UTF-8') as f: lines = f.readlines() flen = len(lines) for i in range(flen): if Find_String in lines[i]: lines[i] = lines[i].replace(Find_String, Replace_String) f.seek(0) f.truncate() f.writelines(lines)Modify_String_TXT(' 0', '0|0')Modify_String_TXT(' 3', '0|3')Modify_String_TXT(' 6', '1|6')
文本替换执行完之后,如何删除红色的整行?数字前面都有空格。谢谢。
回答:
根据你的描述,如果想删除整行中含有特定字符串的行,可以添加一些代码来实现。在每一行替换完成后,判断该行是否包含空格和数字,如果没有,在列表中移除该行。
请将以下代码添加到Modify_String_TXT函数的末尾:pythonfor i in range(len(lines)): if not any(char.isdigit() for char in lines[i]) and not any(char.isspace() for char in lines[i]): lines[i] = ""lines = list(filter(None, lines))
这段代码将遍历lines中的每一行,如果该行不包含数字和空格,则将该行置为空字符串。然后使用filter函数去除空行。
最终的代码如下:pythonimport osdef Modify_String_TXT(Find_String, Replace_String): path = 'F:\\' files = os.listdir(path) for file in files: file_name, file_extension = os.path.splitext(file) if file_extension == '.txt': file_path = os.path.join(path, file) with open(file_path, 'r+', encoding='UTF-8') as f: lines = f.readlines() flen = len(lines) for i in range(flen): if Find_String in lines[i]: lines[i] = lines[i].replace(Find_String, Replace_String) f.seek(0) f.truncate() f.writelines(lines) for i in range(len(lines)): if not any(char.isdigit() for char in lines[i]) and not any(char.isspace() for char in lines[i]): lines[i] = "" lines = list(filter(None, lines)) f.seek(0) f.writelines(lines)Modify_String_TXT(' 0', '0|0')Modify_String_TXT(' 3', '0|3')Modify_String_TXT(' 6', '1|6')
运行修改后的代码后,红色的整行即不再存在。请注意备份文件以防止意外数据丢失。 |