Я использую Python 3.5.2
У меня есть два списка
- список из примерно 750 000 "предложений" (длинные строки)
- список из 20 000 слов, которые я хотел бы удалить из моих 750 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
Этот вложенный цикл обрабатывает около 50 предложений в секунду, что приятно, но для обработки всех моих предложений по-прежнему требуется несколько часов.
-
Есть ли способ использовать метод
str.replace
(который, как я считаю, выполняется быстрее), но при этом требуется, чтобы замены выполнялись только с границами слов? -
Альтернативно, есть способ ускорить метод
re.sub
? Я уже немного улучшил скорость, пропустивre.sub
, если длина моего словa > больше, чем длина моего предложения, но это не очень улучшилось.
Спасибо за любые предложения.