Python中使用正则表达式的字数计算

Python中使用正则表达式的字数计算,python,regex,count,word,Python,Regex,Count,Word,使用正则表达式计算文档中英文单词的正确方法是什么 我试过: words=re.findall('\w+', open('text.txt').read().lower()) len(words) 但我似乎少了几个字(与gedit中的字数相比)。 我做得对吗 非常感谢 这似乎和预期的一样有效 >>> import re >>> words=re.findall('\w+', open('/usr/share/dict/words').read().lower(

使用正则表达式计算文档中英文单词的正确方法是什么

我试过:

words=re.findall('\w+', open('text.txt').read().lower())
len(words)
但我似乎少了几个字(与gedit中的字数相比)。 我做得对吗


非常感谢

这似乎和预期的一样有效

>>> import re
>>> words=re.findall('\w+', open('/usr/share/dict/words').read().lower())
>>> len(words)
234936
>>> 
bash-3.2$ wc /usr/share/dict/words
  234936  234936 2486813 /usr/share/dict/words
你为什么要把你的话小写?那跟伯爵有什么关系

我认为以下措施更有效:

words=re.findall(r'\w+', open('/usr/share/dict/words').read())

使用\w+将无法正确计算包含撇号或连字符的单词,例如“不能”将被计算为2个单词。它还将计算数字(数字串);“12345”和“6.7”将分别算作两个单词(“12”和“345”、“6”和“7”)。

我建议您尝试找出遗漏了哪些单词。您应该能够改进您的正则表达式以包含此类单词。它不应该是
\\w+
吗?或者这是有意的吗?@Constantinius:为了清楚起见,它可能应该是
'\\w+'
r'\w+'
,但是
\w
不是Python字符串中已知的转义序列,因此,
“\w+”
被解释为一个反斜杠-w-plus。“英语单词”,你说?您是否在对照已知的“英语单词”词典进行验证?你会扔掉那些从法语和其他语言借来的吗?谢谢大家的评论@那只是因为我的母语是汉语,我应该写“单词”来代替:)是的,那是完全没有必要的。我刚从一个程序中得到这段代码,该程序在一个文档中查找最常用的单词,他们使用它,因此“Hello”和“Hello”将被视为同一个单词。@Zhe:小写对这段代码没有影响。如果你想数一数独特单词的数量,那么这将产生不同。我建议使用
套装
。谢谢!我应该考虑一下:)python文档中说得很清楚…但是等等,这只会让我的数字变少而不是变多…:(