我有一本字典和一段文字:
{"爱":1, "期望":2, "烦":-2}
test="我爱你,这很烦人"
如果单词出现在字典中,我需要从字符串中删除它们。我已经尝试过这段代码:
for k in dict:
if k in test:
test=test.replace(k, "")
但是结果是:
我就是你
这不是我想要的,因为它不应该删除“annoy”作为单词的一部分,应该评估整个单词。我怎样才能实现它?
最佳答案
首先,您不应将名称分配给同时也是类中内置名称的变量,例如 dict
。
变量test
是一个由字符组成的字符串。当您说 if k in test:
时,您将测试 k
以查看它是否是 test
的子字符串。您想要做的是将 test
分解为单词列表,并将 k
与该列表中的每个完整单词进行比较。如果单词由一个空格分隔,那么它们可能会被“分割”:
测试
.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
>>>
您现在可能会发现句子中有多余的空格,但您可以弄清楚如何删除这些空格。
关于python - 如何从字符串中删除字典中对应的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59786619/