Вам нужно отсканировать слова в text
, а не в списке key_words
. Последний просто используется для проверки состояния и определения для list1
или list2
.
Это опция, использующая re.findall
библиотеку для разбиения текста на слова, без пунктуации . После того, как у вас есть список слов, вы можете перебрать его и проверить, входит ли каждое слово в key_words
.
В следующем примере я использую только одну текстовую строку, вы можете расширить код для списка текстов.
Вот что происходит с text
при применении метода re.findal
l:
text = 'Must the show go on? I wish, it should! It must.'
print(re.findall(r'\w+',text))
#=> ['Must', 'the', 'show', 'go', 'on', 'I', 'wish', 'it', 'should', 'It', 'must']
Поиск текста выполняется один раз при запуске цикла, здесь приведен полный код:
for txt_word in re.findall(r'\w+',text):
if txt_word.lower() in key_words: # <- note .lower()
list1.append(txt_word) # just add if not in list1 if you don't want duplicates
else:
list2.append(txt_word)
Это вывод:
print(list1) #=>['Must', 'wish', 'should', 'must']
print(list2) #=> ['the', 'show', 'go', 'on', 'I', 'it', 'It']