在Python中进行多个连续的正则表达式替换.效率低下?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Python中进行多个连续的正则表达式替换.效率低下?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1446字,纯文字阅读大概需要3分钟。
内容图文
![在Python中进行多个连续的正则表达式替换.效率低下?](/upload/InfoBanner/zyjiaocheng/791/45c5a50e7a624f928f30f17d97df5aec.jpg)
首先 – 我的代码有效.它只是运行缓慢,我想知道我是否遗漏了一些能让它变得更有效率的东西.我正在使用python解析PDF(是的,我知道如果可能的话应该避免这种情况).
我的问题是我必须做几个相当复杂的正则表达式替换 – 当我说替换时,我的意思是删除.我已经做了那些首先删除最多数据的那些,以便下一个表达式不需要分析太多的文本,但这是我能想到的所有加速的东西.
我对python和正则表达式都很陌生,所以可以想象这可以做得更好.
谢谢阅读.
regexPagePattern = r"(Wk)\d{1,2}.\d{2}(\d\.\d{1,2})"
regexCleanPattern = r"(\(continued\))?((II)\d\.\d{1,2}|\d\.\d{1,2}(II)|\d\.\d{1,2})"
regexStartPattern = r".*(II)(\s)?(INDEX OF CHARTS AFFECTED)"
regexEndPattern = r"(II.)\d{1,5}\((P|T)\).*"
contentRaw = re.sub(regexStartPattern,"",contentRaw)
contentRaw = re.sub(regexEndPattern,"",contentRaw)
contentRaw = re.sub(regexPagePattern,"",contentRaw)
contentRaw = re.sub(regexCleanPattern,"",contentRaw)
解决方法:
我不确定你是否在循环内执行此操作.如果不是,则不适用以下内容.
如果多次使用模式,则应使用re.compile(…)进行编译.这样,模式只编译一次.速度的提升应该是巨大的.最小的例子:
>>> a="a b c d e f"
>>> re.sub(' ', '-', a)
'a-b-c-d-e-f'
>>> p=re.compile(' ')
>>> re.sub(p, '-', a)
'a-b-c-d-e-f'
另一个想法:使用re.split( … )而不是re.sub,并使用生成的数据片段对数组进行操作.我不完全确定它是如何实现的,但我认为re.sub会创建文本片段并最终将它们合并为一个字符串,这很昂贵.在最后一步之后,您可以使用“”.join(片段)加入数组.显然,如果您的模式在某处重叠,则此方法将不起作用.
在更改之前和之后获取程序的计时信息会很有趣.
内容总结
以上是互联网集市为您收集整理的在Python中进行多个连续的正则表达式替换.效率低下?全部内容,希望文章能够帮你解决在Python中进行多个连续的正则表达式替换.效率低下?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。