我有两份名单:
因此,我必须循环通过750K 句子并执行大约20K 的替换,但是只有当我的单词实际上是 < em > “ words” 并且不是一个更大的字符串的一部分时。
我是通过预编译我的 文字来做到这一点的,这样它们的两侧就是 \b
的单词边界元字符:
compiled_words = [re.compile(r'\b' + word + r'\b') for word in my20000words]
然后我循环播放我的 “句子”:
import re
for sentence in sentences:
for word in compiled_words:
sentence = re.sub(word, "", sentence)
# put sentence into a growing list
这个嵌套循环正在处理关于 每秒50句的内容,这很好,但是处理我的所有句子仍然需要几个小时。
有没有一种方法可以使用 str.replace
方法(我认为这种方法更快) ,但仍然要求替换只发生在 单词界限?
或者,有没有加速 re.sub
方法的方法?如果单词的长度大于句子的长度,我已经略微提高了速度,跳过了 re.sub
,但这并没有多大改善。
我使用的是 Python 3.5.2