在Python 2.7中,给定此字符串:
斑点是一只棕色的狗.斑点有棕色头发.斑点的头发是棕色的.
什么是找到字符串中"斑点","棕色"和"头发"总和的最佳方法?在示例中,它将返回8.
我正在寻找类似的东西,string.count("Spot","brown","hair")但在元组或列表中使用"要找到的字符串".
谢谢!
这就是你所要求的,但请注意它也会计算"毛茸茸","眉毛"等词.
>>> 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)