【发布时间】:2025-11-26 18:25:01
【问题描述】:
我的 python 脚本会读取文件中的每一行,并在每一行中进行许多正则表达式替换。
如果正则表达式成功,跳到下一行
有什么方法可以加快这种脚本的速度吗?
是否值得改为调用 subn 并检查替换是否完成然后跳到剩下的那个?
如果我编译正则表达式,是否可以将所有编译的正则表达式存储在内存中?
for file in files:
for line in file:
re.sub() # <--- ~ 100 re.sub
PS:每个正则表达式的替换变量
【问题讨论】:
-
你编译正则表达式了吗?
-
你应该展示你的代码(或一个简化的例子)——它会让你在做什么更清楚,并指出可以加快什么。
-
我发现一些帖子说 python 实际上会编译正则表达式并缓存它。顺便说一句,我有近 100 个正则表达式,是否真的可以存储所有编译表达式。
-
Python 会缓存最近使用的正则表达式的编译版本,但数量有限。我认为 100 太多了,你应该编译正则表达式并将它们放在一个列表中。
-
你在解析什么大小的文件?多少个文件?你应该看看这篇关于正则表达式时间复杂度的帖子:*.com/questions/4378455/…。如果你真的要执行那么多正则表达式,那么对于单个字符串匹配,最坏情况的时间是 O(n)。知道了这一点,您可能会考虑解析文件或线程化应用程序的替代方法?另请查看:swtch.com/~rsc/regexp/regexp1.html