我的python脚本会读取文件中的每一行,并在每行中执行许多正则表达式替换。
如果正则表达式成功,请跳到下一行
有没有办法加速这种脚本?
是否值得调用subn并检查是否已完成更换,然后跳到剩下的那个?
如果我编译正则表达式,是否可以将所有已编译的正则表达式存储在内存中?
for file in files:
for line in file:
re.sub() # <--- ~ 100 re.sub
PS:每个正则表达式的替换vaires
答案 0 :(得分:2)
你应该做三件事:
这给你类似的东西:
regex = re.compile(r"My big honking regex")
for datafile in files:
content = datafile.read()
result = regex.sub("Replacement", content)
答案 1 :(得分:2)
正如@Tim Pietzcker所说,你可以通过制作替代品来减少正则表达式的数量。您可以使用匹配对象的“lastindex”属性来确定匹配的替代方案。
以下是您可以做的一个示例:
>>> import re
>>> replacements = {1: "<UPPERCASE LETTERS>", 2: "<lowercase letters>", 3: "<Digits>"}
>>> def replace(m):
... return replacements[m.lastindex]
...
>>> re.sub(r"([A-Z]+)|([a-z]+)|([0-9]+)", replace, "ABC def 789")
'<UPPERCASE LETTERS> <lowercase letters> <Digits>'