我有一些文本文件是另一个软件的输出。我有一个用胶带粘在一起的Perl脚本,用一系列近100个正则表达式连续清理它们。
我是Python的新手,并想知道是否有一种更惯用的方法来处理这个问题,而不是大块的这些方法,这比perl构造要重得多:string =~ s/blah/blah/i;
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)
例如某种带有正则表达式及其替代品的词典?我也很好奇如何连续多次调用模块的功能会影响性能?
答案 0 :(得分:2)
如果将正则表达式放入元组中,则迭代元组并执行替换是一件容易的事。
正则表达式:
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