我有一些文本文件是另一个软件的输出。我有一个用胶带固定在一起的 Perl 脚本,它用一系列将近 100 个连续的正则表达式清理这些脚本。
我是 Python 的新手,想知道是否有比一大块更惯用的方法来处理这个问题,这比 perl 构造要重得多:string =~ s/blah/blah/我;
string = re.sub(r' +', " ", string, re.I)
string = re.sub(r'(\w)- ', "\1, ", string, re.I)
string = re.sub(r'u-s', "U.S.", string, re.I)
例如某种带有正则表达式及其替代品的字典?我也很好奇连续多次调用模块的函数会如何影响性能?
请您参考如下方法:
如果将正则表达式放入元组中,那么遍历元组并执行替换就很容易了。
正则表达式:
import re
regexs = (
(r' +', " ", re.I),
(r'(\w)- ', "\1, ", re.I),
(r'u-s', "U.S.", re.I),
)
compiled_regexs = [(re.compile(rx[0], rx[2]), rx[1]) for rx in regexs]
代码:
for line in lines:
for regex, replace in compiled_regexs:
line = regex.sub(replace, line)
print(line)
测试数据:
lines = (
'Quick Brown Fox',
'u-s lazy dog',
)
结果:
Quick Brown Fox
U.S. lazy dog
