Python - 替换文件中的多行字符串

时间:2014-01-22 16:41:56

标签: python regex

我正在编写一个脚本,在文件中找到几行文字。 我想知道如何用其他给定的来准确替换该文本(新字符串可能更短或更长)。我正在使用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)

是否有可能以这种方式完成(如果是,那么如何以最简单的方式做到这一点?)或者我的方法是错误的或难以做到正确(如果是,那么如何做得对吗?)

2 个答案:

答案 0 :(得分:1)

使用pattern.sub('replacement text', text_in_file)替换匹配。

您可以根据需要在替换模式中使用反向引用。如果弦更短或更长则无关紧要;该方法返回一个带有替换的 new 字符串值。如果文本来自文件,则需要将文本写回该文件以替换内容。

如果您需要就地更换,可以使用fileinput module;该模块负责将原始文件移到一边并在其中写入一个新文件。

答案 1 :(得分:1)

简单的解决方案:

  1. 将整个文本作为字符串读入变量。
  2. 使用多行正则表达式匹配您要替换的内容
  3. 使用output = pattern.sub('replacement', fileContent)
  4. 复杂的解决方案:

    1. 逐行阅读文件
    2. 打印任何与模式开头不匹配的行
    3. 如果找到匹配的开头,请停止打印,直至看到结束模式。
    4. 如果您看到了结束图案,请打印替换件