2 回答
TA贡献1816条经验 获得超4个赞
你最好拆分你的句子,然后计算单词,而不是子字符串:
textt="When I was One I had just begun When I was Two I was nearly new"
wwords=['i', 'was', 'three', 'near']
text_words = textt.lower().split()
result = {w:text_words.count(w) for w in wwords}
print(result)
印刷:
{'three': 0, 'i': 4, 'near': 0, 'was': 3}
如果文本现在有标点符号,最好使用正则表达式根据非字母数字拆分字符串:
import re
textt="When I was One, I had just begun.I was Two when I was nearly new"
wwords=['i', 'was', 'three', 'near']
text_words = re.split("\W+",textt.lower())
result = {w:text_words.count(w) for w in wwords}
结果:
{'was': 3, 'near': 0, 'three': 0, 'i': 4}
(另一种替代方法是使用findall在字字符:text_words = re.findall(r"\w+",textt.lower()))
现在,如果您的“重要”单词列表很大,也许最好计算所有单词,然后使用经典过滤器进行过滤collections.Counter:
text_words = collections.Counter(re.split("\W+",textt.lower()))
result = {w:text_words.get(w) for w in wwords}
TA贡献1872条经验 获得超3个赞
您的简单解决方案是:
from collections import Counter
textt="When I was One I had just begun When I was Two I was nearly new".lower()
wwords=['i', 'was', 'three', 'near']
txt = textt.split()
keys = Counter(txt)
for i in wwords:
print(i + ' : ' + str(keys[i]))
添加回答
举报