Python:一排有许多正则表达式?

2024-05-14 16:55:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些文本文件是另一个软件的输出。我有一个由管道磁带连接在一起的Perl脚本,它用一系列几乎100个正则表达式来清理这些脚本。你知道吗

我对Python还不太熟悉,不知道是否有比一大块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)

比如某种带有正则表达式的dict和它们的替代品?我还很好奇,连续多次调用一个模块的函数会如何影响性能?你知道吗


Tags: 方法re脚本替代品string软件管道结构
1条回答
网友
1楼 · 发布于 2024-05-14 16:55:35

如果将正则表达式放入元组中,那么迭代元组并执行替换是一件容易的事情。你知道吗

正则表达式:

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 

相关问题 更多 >

    热门问题