所有
我相对较新的Python,但广泛使用其他脚本语言与REGEX。我需要一个脚本来打开文件,查找REGEX模式,替换模式并关闭文件。我发现下面的脚本效果很好,但是,我不知道fileinput.input"中的"是否为行?命令可以容纳超过单行的正则表达式模式(即正则表达式包括回车符)。在我的例子中,它涵盖了2行。我的测试文件read_it.txt看起来像这样
read_it.txt(仅包含3行) ABA CDC EFE
该脚本用于打开文件,识别超过2行的ABA \ nCDC模式,然后将其替换为TEST一词。
如果模式替换成功,则文件应如下所示,现在只包含2行: 测试 EFE
知道答案将有助于使用Python脚本解析文本文件并动态修改它们。我相信,但不确定,可能有更好的Python构造仍然允许REGEX搜索。所以问题是:
1)我是否需要在现有脚本中更改某些内容,以改变" for line"命令匹配多行REGEX模式? 2)或者我是否需要一个更适合多行搜索的不同Python脚本?
有些事情可能会有所帮助,但我目前不知道如何写它们是:
1)fileinput" readline"选项。 2)在多线
的表达式中添加(?m)请帮忙!
布伦特
import sys
import fileinput
import re
for line in fileinput.input('C:\\Python34\\read_it.txt', inplace=1):
line = re.sub(r'A(B)A$\nCDC', r'TEST', line.rstrip())
print(line)
答案 0 :(得分:0)
2)在多线
的表达式中添加(?m)
您可以在re.M
flags=re.MULTILINE
或re.sub
作为参数来执行此操作
示例: -
re.sub(r'A(B)A$\nCDC', r'TEST', line.rstrip(), re.M)
或
re.sub(r'A(B)A$\nCDC', r'TEST', line.rstrip(), flags=re.MULTILINE)