Python大杂烩2:词频统计

1.场景

在很久很久以前,有一个王后。
有一天,她在读《A Tale of Two Cities》q2.txt:

A Tale of Two Cities

王后觉得这段文字很有意思,很有规律。于是,她想统计一下每个词都出现了多少次。
效果如a2.txt:

目标文件

我们来帮她实现。


2.代码

python版本:v3.7.3
用法: python wordsCount.py q2.txt a2.txt

#wordsCount.py
#2020.03.11
import sys
from collections import Counter

def words_count(in_file, out_file):
    #用列表解析一次性将文件所有内容读入,文件大于1GB时最好不要这么做
    #文件最好使用utf-8读取和写入
    in_lines = [line for line in open(in_file, "r", encoding="utf-8")]
    #用列表解析的方式得到所有行中的word
    words_list = []
    [words_list.extend(item.strip().split()) for item in in_lines]
    #用Collections包里的Counter方法直接统计,得到1个可遍历的对象
    words_counter = Counter(words_list).most_common()
    #遍历上面的对象,准备输出的列表
    out_lines = [item[0]+"\t"+str(item[1])+"\n" for item in words_counter]
    #直接写入list
    with open(out_file, "w", encoding="utf-8") as fw:
        fw.writelines(out_lines)

if __name__ == "__main__":
    #从控制台cmd接收参数列表
    args = sys.argv
    in_file = args[1]
    out_file = args[2]
    
    words_count(in_file, out_file)

3.讨论

王后: 如果我只想要词数最多的前10个词呢?
作者:

只需要将第14行改为words_counter = Counter(words_list).most_common(10)即可

王后:itIt是同一个词,能不能算在一起,即统计时不区分大小写?
作者:

最好区分大小写,不区分的话输出的时候就不能确定是输出it还是It呢?

你可能感兴趣的:(Python大杂烩2:词频统计)