在 Python 2.7 中,给定这个字符串:
Spot is a brown dog. Spot has brown hair. The hair of Spot is brown.
找出字符串中“Spot”、“brown”和“hair”的总和的最佳方法是什么?在示例中,它将返回 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
也可以写成map
>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
更强大的解决方案可能使用 nltk package
>>> import nltk # Natural Language Toolkit
>>> from collections import Counter
>>> sum(x in {"Spot", "brown", "hair"} for x in nltk.wordpunct_tokenize(s))
8
