Skip to main content
 首页 » 编程设计

Python:连续有很多正则表达式

2024年10月01日32duanxz

我有一些文本文件是另一个软件的输出。我有一个用胶带固定在一起的 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