python - 如何从字符串中删除字典中对应的单词?

标签 python string dictionary

我有一本字典和一段文字:

{"爱":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/

相关文章:

python - 分割 Seaborn fiddle 图表中的控制面

python - 无法理解 lambda 函数

c++ - 给定仅由 '('和 ')'组成的字符串S,找出最长的有效子字符串的长度

java - 将列表转换为基于 boolean 属性的集合的最简单方法?

python - python 中的 dfs 不工作请指导我有关错误

python - 计算日期和时间戳列之间的时间差(以分钟为单位)

c++ - std::string == 运算符不工作

c++ - 检查字符串中的唯一字符

python - 使用 natsort 对字典列表进行排序以获得自然排序顺序

python - Django:修改基于类的 View 上下文(使用 **kwargs)