Python-[jieba库应用]-统计水浒传中人物出现次数

最近被线段树一卡,卡的我啥也不会了,也就一个星期没写博客。
正巧女朋友学python,之前也跟着凑凑热闹,正巧最近问了我一个题:如何用jieba库统计水浒传人物出现得次数,并且输出前20名得人物。
想了想直接暴力不久完了,管他多暴力呢

思路

主要思路:其实就是用jieba库先将文章进行拆分,然后我们创建一个字典,用来统计每个人物出现得次数,当然这里可能就会出现一个问题了,有些不是人名得词语也会被统计上,那怎么办呢?我们可以先将人名输入到一个列表当中,循环记录次数得时候判断人名是否存在在列表当中(我认为很暴力)

预先处理

1.
在这里插入图片描述
什么?你要将水浒传所有人名都存在列表里面?好麻烦啊。
当然不是,我们可以先从网上把所有人名查出来用python得spilt函数将其直接输出一个列表类型,然后粘贴即可。

代码:

#coding:utf-8
names="宋江、卢俊义、吴用、公孙胜、关胜、林冲、秦明、呼延灼、花荣、柴进、
李应、朱仝、鲁智深、武松、董平、张清、杨志、徐宁、索超、戴宗、刘唐、李逵、
史进、穆弘、雷横、李俊、阮小二、张横、阮小五、张顺、阮小七、杨雄、石秀、
解珍、解宝、燕青、朱武、黄信、孙立、宣赞、郝思文、韩滔、彭玘、单廷珪、
魏定国、萧让、裴宣、欧鹏、邓飞、燕顺、杨林、凌振、蒋敬、吕方、郭盛、安道全、
皇甫端、王英、扈三娘、鲍旭、樊瑞、孔明、孔亮、项充、李衮、金大坚、马麟、
童威、童猛、孟康、侯健、陈达、杨春、郑天寿、陶宗旺、宋清、乐和、龚旺、
丁得孙、穆春、曹正、宋万、杜迁、薛永、施恩、李忠、周通、汤隆、杜兴、邹渊、
邹润、朱贵、朱富、蔡福、蔡庆、李立、李云、焦挺、石勇、孙新、顾大嫂、张青、
孙二娘、王定六、郁保四、白胜、时迁、段景住"
print(names.split('、'))

2.
其次你需要有拥有一篇水浒传得小说文章,这里就不提供了
注意得是txt他的格式一定要是’utf-8’编码

代码部分

import jieba
import time
start = time.perf_counter()    #起始时间
txt=open("1111.txt","r",encoding='utf-8').read()
names=['宋江', '卢俊义', '吴用', '公孙胜', '关胜', '林冲', '秦明', '呼延灼', '花荣', '柴进', '李应', '朱仝', '鲁智深', '武松', '董平', '张清', '杨志', '徐宁', '索超', '戴宗', '刘唐', '李逵', '史进', '穆弘', '雷横', '李俊', '阮小二', '张横', '阮小五', '张顺', '阮小七', '杨雄', '石秀', '解珍', '解宝', '燕青', '朱武', '黄信', '孙立', '宣赞', '郝思文', '韩滔', '彭玘', '单廷珪', '魏定国', '萧让', '裴宣', '欧鹏', '邓飞', '燕顺', '杨林', '凌振', '蒋敬', '吕方', '郭盛', '安道全', '皇甫端', '王英', '扈三娘', '鲍旭', '樊瑞', '孔明', '孔亮', '项充', '李衮', '金大坚', '马麟', '童威', '童猛', '孟康', '侯健', '陈达', '杨春', '郑天寿', '陶宗旺', '宋清', '乐和', '龚旺', '丁得孙', '穆春', '曹正', '宋万', '杜迁', '薛永', '施恩', '李忠', '周通', '汤隆', '杜兴', '邹渊', '邹润', '朱贵', '朱富', '蔡福', '蔡庆', '李立', '李云', '焦挺', '石勇', '孙新', '顾大嫂', '张青', '孙二娘', '王定六', '郁保四', '白胜', '时迁', '段景住']
words=jieba.lcut(txt)
cnt={}  #用来计数
for word in words:
    if word not in names:  #如果根本不是人名,那就不记录这个分词了
        continue
    cnt[word]=cnt.get(word,0)+1
items=list(cnt.items())   #将其返回为列表类型
items.sort(key=lambda x:x[1],reverse=True)  #排序
for i in range(20):   #输出我亲爱得二维列表
    name,ans=items[i]
    print("{0:<5}出现次数为:{1:>5}".format(name,ans))
end = time.perf_counter()      #结束时间
print('程序运行时间:%.4f'%(end - start))

运行结果

"D:\Program Files (x86)\python\python.exe" C:/Users/Xiaoxiaoxiao/PycharmProjects/untitled1/123.py
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\XIAOXI~1\AppData\Local\Temp\jieba.cache
Loading model cost 0.697 seconds.
Prefix dict has been built successfully.
宋江   出现次数为: 2473
李逵   出现次数为: 1100
武松   出现次数为: 1027
林冲   出现次数为:  670
吴用   出现次数为:  648
卢俊义  出现次数为:  548
鲁智深  出现次数为:  326
柴进   出现次数为:  315
戴宗   出现次数为:  296
公孙胜  出现次数为:  275
朱仝   出现次数为:  260
花荣   出现次数为:  255
燕青   出现次数为:  253
秦明   出现次数为:  246
李俊   出现次数为:  232
史进   出现次数为:  227
杨志   出现次数为:  220
石秀   出现次数为:  195
张清   出现次数为:  191
关胜   出现次数为:  185
程序运行时间:6.3082

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/xxxxxiao123/article/details/105682914