Я думаю, что ваш вывод не то, что вы действительно хотите. Стоп-слово 'is' все еще включено.
Моя попытка будет следующей:
pylist = ['This is an apple', 'This is an orange', 'The pineapple is yellow', 'A grape is red']
stopwords = ['This', 'is', 'an', 'The']
stopwords = set(w.lower() for w in stopwords)
def remove_words(s, stopwords):
s_split = s.split()
s_filtered = [w for w in s_split if not w.lower() in stopwords]
return " ".join(s_filtered)
result = [remove_words(x, stopwords) for x in pylist]
с result
, равным
['apple', 'orange', 'pineapple yellow', 'A grape red']
Чтобы получить разумный эффективный поиск (поиск в наборе занимает, конечно, постоянное время), я сохранил строчную форму стоп-слов в наборе. Обычно при удалении стоп-слов регистр не учитывается.
Примечание: Очень часто бывает полезно или даже необходимо удалить стоп-слова. Но учтите, что в некоторых случаях удаление стоп-слов нежелательно: https://towardsdatascience.com/why-you-should-avoid-removing-stopwords-aa7a353d2a52
Обновление: Когда вы действительно уверены, что вы нужно избавиться от всех возможных стоп-слов, убедиться, что вы не пропустили ни одного - примите совет yatu: взгляните на nltk . Особенно, если в следующем году у вас может возникнуть проблема с добавлением Spani sh palabra de paradas, French mot d'arrêt и German Stopp-Wörter.