在以前的文章中,我提到过Python标准库中的collections模块中的Counter类。它的作用非常大,这里我们要用利它来实现单词统计。对于任意一篇全英文的文本文件,我们要列出其中每一个单词各自出现的次数。
我们可以用正则表达式来提取文件中的英文单词(正则表达式是一个极其强大的工具),接着将他们装入列表中,最后用Counter类来统计单词出现频次。
from collections import Counter
import re
"""
计算一篇英文文章中的单词个数
"""
#为了方便设置默认文件名
def word_count(filename='test.txt'):
with open(filename, 'r') as f:
data = f.read()
#将大小写统一
data = data.lower()
#去除特殊字符和数字
datalist = re.split(r'[sn]+', data)
return Counter(datalist).most_common()
if __name__ == '__main__':
wc = word_count()
for i in range(len(wc)):
print ('%15s ----> %3s' %(wc[i][0], wc[i][1]))
为了避免可能出现的大小写不同的问题使得含大写的单词和小写单词被区别对待,我们使用lower来将所有单词统一为小写
re.s