我正在编写一个脚本,在文件中找到几行文字。 我想知道如何用其他给定的来准确替换该文本(新字符串可能更短或更长)。我正在使用re.compile()
创建一个多行模式,然后在我喜欢的文件中查找任何匹配项:
for match in pattern.finditer(text_in_file)
#if it would be possible I wish to change
#text in a file here by (probably) replacing match.group(0)
是否有可能以这种方式完成(如果是,那么如何以最简单的方式做到这一点?)或者我的方法是错误的或难以做到正确(如果是,那么如何做得对吗?)
答案 0 :(得分:1)
使用pattern.sub('replacement text', text_in_file)
替换匹配。
您可以根据需要在替换模式中使用反向引用。如果弦更短或更长则无关紧要;该方法返回一个带有替换的 new 字符串值。如果文本来自文件,则需要将文本写回该文件以替换内容。
如果您需要就地更换,可以使用fileinput
module;该模块负责将原始文件移到一边并在其中写入一个新文件。
答案 1 :(得分:1)
简单的解决方案:
output = pattern.sub('replacement', fileContent)
复杂的解决方案: