擅长:python、mysql、java
<p>使用<code>\b</code>来计算单词比使用regex<code>\w+</code>要快得多,例如:</p>
<pre><code>import re
_re_word_boundaries = re.compile(r'\b')
def num_words(line):
return len(_re_word_boundaries.findall(line)) >> 1
</code></pre>
<p>注意,我们必须将数字减半,因为<code>\b</code>在单词的开头和结尾都匹配。不幸的是,与egrep不同,Python不支持只在开头或结尾进行匹配。</p>
<p>如果您有很长的行并且关心内存,那么使用迭代器可能是更好的解决方案:</p>
<pre><code>def num_words(line):
return sum(1 for word in _re_word_boundaries.finditer(line)) >> 1
</code></pre>