Ускорьте миллионы замен регулярных выражений в Python 3

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

У меня есть два списка:

  • список из примерно 750 тыс. "предложений" (длинных строк)
  • список примерно из 20 000 "слов", которые я хотел бы удалить из своих 750 000 предложений

Итак, у меня есть для перебора 750 000 предложений и выполнения около 20 000 замен, НО ТОЛЬКО если мои слова на самом деле являются "словами" и не являются частью большей строки символов.

Я делаю это путем предварительной компиляции моих слов так, чтобы они были окружены метасимволом границы слова:

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

Затем я перебираю свой " предложения":

импортировать re для предложения в предложениях: для слова в скомпилированных_словах: предложение = re.sub(слово, "", предложение) # поместить предложение в растущее list 

Этот вложенный цикл обрабатывает около 50 предложений. es в секунду, что хорошо, но обработка всех моих предложений занимает несколько часов.

  • Есть ли способ использовать метод str. replace (который, как мне кажется, быстрее), но по-прежнему требует, чтобы замены происходили только на границах слов?

  • Альтернативно, существует ли способ ускорить метод re.sub? Я уже незначительно улучшил скорость, пропустив re.sub, если длина моего слова > чем длина моего предложения, но это не сильное улучшение.

Я использую Python 3.5.2