Python 3에서 수백만 개의 정규식 대체 속도 향상

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

두 개의 목록이 있습니다.

  • 약 750K '문장'(긴 문자열)의 목록
  • 750,000개의 문장에서 삭제하고 싶은 약 20,000개의 "단어" 목록

그래서, 750,000개의 문장을 반복하고 약 20,000개의 교체를 수행합니다. 그러나 단, 내 단어가 실제로 "단어"이고 더 큰 문자열의 일부가 아닌 경우에만 가능합니다.

단어를 사전 컴파일하여 단어 경계 메타문자 옆에 오도록 합니다.

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

그런 다음 내 " 문장":

import re for sentence in sentence: for word in compatible_words: sentence = re.sub(word, "", sentence) # 문장을 성장에 넣습니다. list 

이 중첩 루프는 약 50개의 문장을 처리하고 있습니다. 초당 es, 좋긴 하지만 모든 문장을 처리하는 데 여전히 몇 시간이 걸립니다.

  • str. replace 메서드(내 생각에 이 방법이 더 빠르다고 생각함)를 사용하지만 여전히 단어 경계에서만 교체가 일어나도록 요구합니까?

  • 또는 re.sub 메서드의 속도를 높이는 방법은 무엇입니까? 내 단어의 길이가 > 제 문장 길이보다 길지만 "별로 개선되지는 않았습니다.

저는 Python 3.5.2를 사용 중입니다.