Во-первых, вам не следует присваивать имена переменным, которые также являются именами встроенных в классы, например dict
.
Переменная test
- это строка, состоящая из символов. Когда вы говорите, if k in test:
, вы будете тестировать k
, чтобы увидеть, является ли это подстрокой test
. То, что вы хотите сделать, это разбить test
на список слов и сравнить k
с каждым полным словом в этом списке. Если слова разделены одним пробелом, то они могут быть «разделены» с помощью:
test
.split ('')
Единственное осложнение состоит в том, что он создаст следующий список :
['i', '', 'you,', 'that', 'is', 'annoying']
Обратите внимание, что у третьего элемента все еще есть ,
. Таким образом, мы должны сначала избавиться от знаков препинания, которые мы можем ожидать найти в нашем предложении:
test.replace('.', '').replace(',', ' ').split(' ')
Выход:
['i', '', 'you', '', 'that', 'is', 'annoying']
Следующее фактически избавит от всех знаков препинания:
import string
test.translate(str.maketrans('', '', string.punctuation))
Итак, теперь наш код становится:
>>> import string
>>> d = {"love":1, "expect":2, "annoy":-2}
>>> test="i love you, that is annoying"
>>> for k in d:
... if k in test.translate(str.maketrans('', '', string.punctuation)).split(' '):
... test=test.replace(k, "")
...
>>> print(test)
i you, that is annoying
>>>
Теперь вы можете обнаружить, что в вашем предложении есть дополнительные пробелы, но вы можете выяснить, как избавиться от них.