我正在尝试查找某个单词在字符串中出现的次数。
word = "dog"
str1 = "the dogs barked"
我使用以下方法来计算出现次数:
count = str1.count(word)
问题是我想要完全匹配。所以这句话的计数将为 0。 这可能吗?
最佳答案
如果您要提高效率:
import re
count = sum(1 for _ in re.finditer(r'\b%s\b' % re.escape(word), input_string))
这不需要创建任何中间列表(与 split()
不同),因此对于较大的 input_string
值将有效地工作。
它还有正确使用标点符号的好处 - 它会正确返回 1
作为短语 "Mike saw a dog."
的计数(而无参数的split()
不会)。它使用 \b
正则表达式标志,匹配单词边界(\w
a.k.a [a-zA-Z0-9_]
和其他任何东西)。
如果您需要担心超出 ASCII 字符集的语言,您可能需要调整正则表达式以正确匹配这些语言中的非单词字符,但对于许多应用程序来说,这会过于复杂,并且在许多其他情况下设置正则表达式的 unicode 和/或区域设置标志就足够了。
关于python - 在python 3中查找字符串中某个单词的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17268958/