如何在Python中对TXT文件多行执行多正则表达式替换?
解决同一行处理多模式替换的问题
嘿,这个问题其实超容易解决的!你只需要把两次re.sub操作链式调用,或者用批量处理的方式,就能在同一行上完成多种模式的替换啦。下面给你两种实用的方案:
方案1:链式调用re.sub(适合少量模式)
直接在第一次替换的结果上执行第二次替换,代码逻辑简单直观:
import re path = "your_target_file.txt" temporary_path = "temp_modified_file.txt" # 用with语句自动管理文件,避免忘记关闭 with open(path, 'r') as file, open(temporary_path, 'w') as output: for line in file: # 先处理第一个模式替换 modified_line = re.sub("patternToChange", "patternToWrite", line) # 再用处理后的结果做第二个模式替换 modified_line = re.sub("patternToChange2", "patternToWrite2", modified_line) # 写入临时文件 output.write(modified_line)
这种方式的好处是代码清晰,适合只有2-3个替换规则的场景。
方案2:用字典批量处理(适合多模式扩展)
如果以后需要添加更多替换规则,用字典来存储模式和对应替换值会更灵活,不用重复写re.sub:
import re path = "your_target_file.txt" temporary_path = "temp_modified_file.txt" # 把所有替换规则存在字典里,键是匹配模式,值是替换内容 replace_rules = { "patternToChange": "patternToWrite", "patternToChange2": "patternToWrite2" # 后续要加新规则,直接在这里加键值对就行 } with open(path, 'r') as file, open(temporary_path, 'w') as output: for line in file: modified_line = line # 循环处理每个替换规则 for pattern, replacement in replace_rules.items(): modified_line = re.sub(pattern, replacement, modified_line) output.write(modified_line)
额外小提示:修改原文件
如果你想直接覆盖原文件,处理完临时文件后可以用os.replace来替换原文件(注意先备份原文件,避免意外):
import os # 替换原文件(Python 3.3+支持) os.replace(temporary_path, path)
内容的提问来源于stack exchange,提问作者hacks4life
相关产品推荐
相关产品推荐

