9
Python 3で数百万の正規表現置換を高速化
Python 3.5.2を使用しています 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] 次に、「文」をループします import re for sentence in sentences: for word in compiled_words: sentence = re.sub(word, "", sentence) # put sentence into a growing list このネストされたループは1秒あたり約50文を処理します。これはすばらしいことですが、すべての文を処理するにはまだ数時間かかります。 このstr.replace方法を使用する方法はありますか(私はより速いと思います)、それでも置換が単語の境界でのみ発生することを要求しますか? または、re.subメソッドを高速化する方法はありますか?re.sub私の単語の長さが私の文の長さよりも長い場合はスキップして、速度をわずかに改善しましたが、それほど改善されていません。 ご提案ありがとうございます。