在 Python 3 中加速數百萬個正則表達式替換

| | | | | | | | | | | | | |

我有兩個列表:

  • 一個大約 750K 的列表 “句子”(長字符串)
  • 我想從我的 75 萬個句子中刪除大約 2 萬個“單詞”

所以,我有循環 750K sentences 並執行大約 20K 替換,但僅當我的單詞實際上是 “單詞” 並且不是更大字符串的一部分時。

我通過預編譯我的 單詞 來做到這一點,以便它們的兩側是 單詞邊界元字符:

compiled_words = [re.compile(r"" + word + r"") for word in my20000words] 

然後我循環遍歷我的" sentence":

import re for sentence in sentence: for word in compiled_words: sentence = re.sub(word, "", sentence) # 把句子放入一個不斷增長的list 

這個嵌套循環正在處理大約50句es per second,這很好,但是處理我所有的句子仍然需要幾個小時。

  • 有沒有辦法使用 str. replace 方法(我認為它更快),但仍然要求替換只發生在 單詞邊界

  • 或者,有沒有一種加快 re.sub 方法的方法?如果我的單詞的長度是>,我已經通過跳過 re.sub 略微提高了速度。比我句子的長度,但它並沒有太大的改進。

我正在使用 Python 3.5.2