相关疑难解决方法(0)

在Python 3中加速数百万的正则表达式替换

我正在使用Python 3.5.2

我有两个清单

  • 大约750,000个"句子"的列表(长串)
  • 我希望从我的750,000个句子中删除大约20,000个"单词"的列表

所以,我必须循环750,000个句子并执行大约20,000次替换,但是只有我的话实际上是"单词"并且不是更大字符串的一部分.

我是通过预先编译我的文字来做到这一点的,这样它们就被\b元字符所包围

compiled_words = [re.compile(r'\b' + word + r'\b') for word in my20000words]
Run Code Online (Sandbox Code Playgroud)

然后我循环我的"句子"

import re

for sentence in sentences:
  for word in compiled_words:
    sentence = re.sub(word, "", sentence)
  # put sentence into a growing list
Run Code Online (Sandbox Code Playgroud)

这个嵌套循环每秒处理大约50个句子,这很好,但是处理我的所有句子仍需要几个小时.

  • 有没有办法使用该str.replace方法(我认为更快),但仍然要求替换只发生在字边界

  • 或者,有没有办法加快re.sub方法?re.sub如果我的单词的长度大于句子的长度,我已经通过跳过来略微提高了速度,但这并没有太大的改进.

谢谢你的任何建议.

python regex string performance replace

117
推荐指数
7
解决办法
2万
查看次数

标签 统计

performance ×1

python ×1

regex ×1

replace ×1

string ×1