对文本文件中出现的词进行次数统计

主要涉及读取文本文件、统计词出现的数目、排序、隐藏函数lambda。

随便从网页复制一篇文章保存成“train.txt”,采用以下代码读取txt文件:

def load_stop_words(file = "stopwords.txt"):
    with open(file,"r",encoding="utf-8") as f:
        return f.read().split("\n")

def txt(file="train.txt"):
    f = open(file, "r", encoding="utf-8")
    line = f.readline().strip("\n")  # 读取第一行,并删除换行符
    data = []
    data.append(line)
    while line:  # 直到读取完文件
        line = f.readline().strip("\n")  # 读取一行文件,并删除换行符
        data.append(line)
    f.close()  # 关闭文件
    result = []
    stop_words = load_stop_words()
    for words in data:
        c_words = jieba.lcut(words)
        result.append([word for word in c_words if word not in stop_words])
    return result

上一步得到了一个result列表,列表中是经过分词后的一个个词语,接下来要统计这些词语出现的次数,采用字典形式存储统计结果,key为词语,value为该词出现次数,对应代码如下:

if __name__ == "__main__":
    text = txt()
    # print(text)
    dict = {}
    for words in text:
        for word in words:
            if word not in dict.keys():
                dict[word] = 1
            else:
                dict[word] += 1

最后对字典进行排序,按照词出现次数从大到小往后排,这里要用到sorted函数、lambda函数,对应代码如下:

res = sorted(dict.items(),key = lambda i:i[1],reverse=True)

sorted函数返回值是列表,所以输出前十个出现次数最多的词代码如下:

print(res[:10])

我的运行结果如下:

总结:

1、txt文件编码格式为utf-8

2、f.readline()一次读取一行,会读到末尾换行符"\n";f.readlines() 读取整个文件,会读到每行末尾换行符"\n"。使用strip("\n")可删掉换行符。

3、sorted函数中,key=lambda i: i[1]表示按照排序对象的第二个元素来排序,即value,reverse=True表示倒序。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值