2つのリストがあります:
- 約75万のリスト「文」(長い文字列)
- 75万文から削除したい約2万「単語」のリスト
つまり、 750Kの文をループして約20Kの置換を実行しますが、ただし、私の単語が実際に「単語」であり、より大きな文字列の一部ではない場合に限ります。
これを行うには、単語を事前にコンパイルして、の単語境界メタ文字が隣接するようにします。
compiled_words = [re.compile(r "" + word + r "")for word in my20000words]
次に、"をループします。センテンス" :
import re for statement in statement:for word incompiled_words:sentence = re.sub(word、"&quot ;, statement)#センテンスを成長させるリスト
このネストされたループは約50センテンスを処理していますes per second 、これは素晴らしいですが、すべての文を処理するのにまだ数時間かかります。
-
strを使用する方法はありますか。 replace
メソッド(より高速だと思います)ですが、それでも単語の境界でのみ置換が行われる必要がありますか? -
または、ありますか
re.sub
メソッドを高速化する方法は?単語の長さが>の場合、re.sub
をスキップすることで、速度をわずかに改善しました。文の長さよりも長いですが、それほど改善されていません。
私はPython3.5.2を使用しています