У меня есть два списка:
- список из примерно 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