如何使用正则表达式计算文档中的英文单词数量?
我尝试了以下方法:
words=re.findall('\w+', open('text.txt').read().lower())
len(words)
但是似乎有几个单词我漏掉了(与gedit中的字数相比)。 我这样做对吗?
非常感谢!
使用 \w+ 无法正确计算包含撇号或连字符的单词,例如 "can't" 将被计算为 2 个单词。它还会计算数字(数字字符串);"12,345" 和 "6.7" 每个将计为 2 个单词("12" 和 "345","6" 和 "7")。
这似乎按预期工作。
>>> 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())
set
来实现。 - johnsyweb一旦您通过_words_list = words.split()
或使用正则表达式或其他方法进行必要的处理,您可以轻松地使用以下方法获取单词计数:
import numpy as NP
import pandas as PD
_counted_words = PD.Series(NP.array(_words_list)).value_counts()
\\w+
吗?还是这是有意为之的? - Constantinius'\\w+'
或者r'\w+'
更清晰,但是\w
在Python字符串中不是已知的转义序列,所以'\w+'
会被解释为一个字面上的反斜杠-w-plus。 - Ben Hoyt