Ваша проблема в том, что итератор для строки возвращает каждый символ, а не каждое слово.
Например:
>>> palabras = "Buenos dias"
>>> [c for c in palabras]
['B', 'u', 'e', 'n', 'a', 's', ' ', 'd', 'i', 'a', 's']
Вам нужно выполнить итерацию и проверить каждое слово, к счастью, функцию splitуже существует в стандартной библиотеке python под строковым модулем .Тем не менее, вы имеете дело с естественным языком, включая пунктуацию, вы должны искать здесь для более надежного ответа, использующего модуль re
.
После того, как у вас есть список слов, вы должны все их прописатьперед сравнением, а затем сравните их так, как вы уже показали.
Buena suerte.
РЕДАКТИРОВАТЬ 1
Хорошо, попробуйте этот код, он должен работать для вас.Он показывает два способа сделать это, они по существу идентичны, но первый немного яснее, а второй более питонический.
import re
from nltk.corpus import stopwords
scentence = 'El problema del matrimonio es que se acaba todas las noches despues de hacer el amor, y hay que volver a reconstruirlo todas las mananas antes del desayuno.'
#We only want to work with lowercase for the comparisons
scentence = scentence.lower()
#remove punctuation and split into seperate words
words = re.findall(r'\w+', scentence,flags = re.UNICODE | re.LOCALE)
#This is the simple way to remove stop words
important_words=[]
for word in words:
if word not in stopwords.words('spanish'):
important_words.append(word)
print important_words
#This is the more pythonic way
important_words = filter(lambda x: x not in stopwords.words('spanish'), words)
print important_words
Надеюсь, это поможет вам.