python - 在python 3中查找字符串中某个单词的出现

标签 python string count match

我正在尝试查找某个单词在字符串中出现的次数。

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/

相关文章:

python - OpenCV - Python 和 C++ 中的拉普拉斯不同结果

javascript - javascript 字符串中带有转义 unicode 字符的字符串和非转义 unicode 字符之间有什么区别?

java - 如何填充 JTextPane

Java - 尝试使用 get 方法打印字符串数组中的索引

Java信号量与指定线程的增量计数

python - 从 Protocol Buffer 创建一个类似对象的 python 字典以用于 pandas

Python __loader__,它是什么?

java - (Java)计算方法的递归调用(但始终是一个新实例)

mysql - 如何计算多个表?

python - 为什么我的 SVM 的性能在缩放训练和测试数据后下降?