Удалите все вхождения слов в строке из списка python

Я пытаюсь совместить и удалить все слова из списка из строки, используя скомпилированное регулярное выражение, но я изо всех сил стараюсь избежать появления в словах.

Текущий:

REMOVE_LIST = ["a", "an", "as", "at", ...] remove = '|'.join(REMOVE_LIST) regex = re.compile(r'('+remove+')', flags=re.IGNORECASE) out = regex.sub("", text) 

В: «Быстрая коричневая лиса перепрыгнула через муравей»

Out: «Быстрая коричневая лиса перепрыгнула через т»

Ожидаемый: «быстрый коричневый лис перепрыгнул»

Я попытался изменить строку для компиляции следующим, но безрезультатно:

  regex = re.compile(r'\b('+remove+')\b', flags=re.IGNORECASE) 

Любые предложения или я пропускаю что-то ярко очевидное?

Одна из проблем заключается в том, что только первая \b находится внутри строки. Второй интерпретируется как символ обратного пробела (ASCII 8), а не как граница слова.

Чтобы исправить, измените

 regex = re.compile(r'\b('+remove+')\b', flags=re.IGNORECASE) 

в

 regex = re.compile(r'\b('+remove+r')\b', flags=re.IGNORECASE) ^ THIS 

вот предложение без использования регулярного выражения, которое вы можете рассмотреть:

 >>> sentence = 'word1 word2 word3 word1 word2 word4' >>> remove_list = ['word1', 'word2'] >>> word_list = sentence.split() >>> ' '.join([i for i in word_list if i not in remove_list]) 'word3 word4'