从字符串中获取特定字符并将它们附加到列表中

Getting specific characters from a string and appending them to a list

我有一个字符串如下:

my_string = "Jack 无法解释 他的愚蠢错误。计算机 5% 的国家'商业用电。是时候关注公司的核心业务了。公司需要关注它最大的客户..."

和一个列表:

Phrasal_Verbs = [ “占”, “痛”, “采取行动”, “行动起来”, “行动起来”, “添加在”, “专注于” ...]

我想用计数器模块找出每个短语动词在字符串中出现的次数,然后从字符串中删除短语动词。到目前为止我的代码是:

phrasal_verbs_list = []
for pv in Phrasal_Verbs:
if pv in my_string:
    phrasal_verbs_list.append(pv)
    my_string = my_string.replace(pv, "")
pv_count = dict(Counter(phrasal_verbs_list))

上面的代码找到了所有的短语动词,但即使字符串中有三个“Account for”,它也只给了我一个。

预期 pv_count = {'account for' : 2, 'focus on' : 2, rest_of_the_phrasal_verbs : 发生 }

得到 = {'account for': 1, 'act out': 1, 'allow for': 1, 'be in': 1, 'be on': 1, 'blow down': 1, ... 'focus on' : 1}

发生这种情况是因为 replace 替换了该字符串的所有出现,因此不会计算剩余的出现次数,因此计数为 1。

使用 my_string.replace(pv, "", 1) 仅替换第一个匹配项。那应该可以解决您的问题。

你可以简单地这样做

pv_count = {string: my_string.count(string) for string in Phrasal_Verbs}

然后,如果您想从字符串中删除动词短语:

import re
text = re.sub("|".join(pv_count.keys()), "", my_string)

您也可以直接调用 Phrasal_Verbs 而不是评论中指出的 `pv_count.keys()。