我的 python 脚本将读取文件中的每一行并在每一行中进行许多正则表达式替换。
如果正则表达式成功,请跳到下一行
有什么方法可以加快这种脚本的速度吗?
是否值得调用 subn 并检查替换是否完成然后跳到剩下的?
如果我编译正则表达式,是否可以将所有编译的正则表达式存储在内存中?
for file in files:
for line in file:
re.sub() # <--- ~ 100 re.sub
PS:每个正则表达式的替换变量
你可能应该做三件事:
这给了你类似的东西:
regex = re.compile(r"My big honking regex")
for datafile in files:
content = datafile.read()
result = regex.sub("Replacement", content)
正如@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>'