在Python中使用正则表达式统计字数

4 投票
3 回答
17267 浏览
提问于 2025-04-16 17:43

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

我试过这个:

words=re.findall('\w+', open('text.txt').read().lower())
len(words)

但是似乎我漏掉了一些单词(和gedit中的单词计数相比)。我这样做对吗?

非常感谢!

3 个回答

0

一旦你通过 _words_list = words.split() 或者使用正则表达式等其他方法得到了一个单词列表,你就可以很简单地用下面的方法来计算单词的数量:

import numpy as NP
import pandas as PD

_counted_words = PD.Series(NP.array(_words_list)).value_counts()
1

这看起来是按预期工作的。

>>> 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())
6

使用 \w+ 这个方法来计算单词时,会出现一些问题,比如带有撇号或连字符的单词,比如“can't”会被算作两个单词。此外,它还会把数字也算作单词;像“12,345”和“6.7”这样的数字会分别被算作两个单词(“12”和“345”,“6”和“7”)。

撰写回答