计算另一个字符串中多个字符串的出现次数

Dha*_*tle 1 python count

在Python 2.7中,给定此字符串:

斑点是一只棕色的狗.斑点有棕色头发.斑点的头发是棕色的.

什么是找到字符串中"斑点","棕色"和"头发"总和的最佳方法?在示例中,它将返回8.

我正在寻找类似的东西,string.count("Spot","brown","hair")但在元组或列表中使用"要找到的字符串".

谢谢!

Joh*_*ooy 8

这就是你所要求的,但请注意它也会计算"毛茸茸","眉毛"等词.

>>> s = "Spot is a brown dog. Spot has brown hair. The hair of Spot is brown."
>>> sum(s.count(x) for x in ("Spot", "brown", "hair"))
8
Run Code Online (Sandbox Code Playgroud)

你也可以把它写成一个 map

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
Run Code Online (Sandbox Code Playgroud)

更强大的解决方案可能会使用nltk包

>>> import nltk  # Natural Language Toolkit
>>> from collections import Counter
>>> sum(x in {"Spot", "brown", "hair"} for x in nltk.wordpunct_tokenize(s))
8
Run Code Online (Sandbox Code Playgroud)