擅长:python、mysql、java
<p>如果你想提高效率:</p>
<pre><code>import re
count = sum(1 for _ in re.finditer(r'\b%s\b' % re.escape(word), input_string))
</code></pre>
<p>这不需要创建任何中间列表(与<code>split()</code>不同),因此对于较大的<code>input_string</code>值有效。</p>
<p>它还有正确使用标点符号的好处——它将正确返回<code>1</code>作为短语<code>"Mike saw a dog."</code>的计数(而无参数<code>split()</code>则不会)。它使用<code>\b</code>regex标志,它在单词边界上匹配(在<code>\w</code>a.k.a<code>[a-zA-Z0-9_]</code>和其他任何东西之间的转换)。</p>
<p>如果需要担心ASCII字符集以外的语言,可能需要调整regex以正确匹配这些语言中的非单词字符,但对于许多应用程序,这将是一个过度复杂的过程,在许多其他情况下,为regex设置unicode和/或locale标志就足够了。</p>