大家好,我是人间富贵花下的贫穷草,简称人间富贵草。

jieba(结巴)作为一个优秀的第三方中文分词函数库,今天我们就把它拉出来溜溜。

《三国演义》txt文本下载地址:

https://www.shutxt.com/e/DownSys/doaction.php?enews=DownSoft&classid=18&id=750&pathid=0&pass=3db1f2cfcfe0f9b563d489e0498444b1&p=:::​www.shutxt.com

鸿篇巨制《三国演义》到底谁的出场次数最多呢?

#《三国演义》人物出场统计,把此py文件和《三国演义》文本放在同一文件夹
import jieba
#打开txt文件并且读取全部文本
file = open("三国演义.txt","r+",encoding='utf-8').read()
#jieba精确模式分词,返回列表words
words =jieba.lcut(file)#核心思路如下,把人名当做字典key,出场次数当做value
dict_counts = {}
for word in words:if len(word) == 1: #排除单一字符如“的/地/也“的干扰continueelse: #dict_counts.get(word,0)+1表示已存在word则返回对应value值并+1,不存在就返回0再+1dict_counts[word] = dict_counts.get(word,0)+1 #d.get()的用法可见上篇文章items = list(dict_counts.items())
#按出场次数降序排序
items.sort(key=lambda x:x[1],reverse=True)
#输出top20名
for i in range(20):word,count = items[i]print("人物:{0:<10}出场次数:{1:>5}".format(word,count))
>>>
========== RESTART: D:/Program Files/Python/Python_Files/jieba/f_print.py ==========
人物:曹操        出场次数:  936
人物:孔明        出场次数:  831
人物:将军        出场次数:  772
人物:却说        出场次数:  657
人物:玄德        出场次数:  570
人物:关公        出场次数:  509
人物:丞相        出场次数:  491
人物:二人        出场次数:  468
人物:不可        出场次数:  441
人物:荆州        出场次数:  421
人物:不能        出场次数:  387
人物:孔明曰       出场次数:  385
人物:玄德曰       出场次数:  383
人物:如此        出场次数:  378
人物:张飞        出场次数:  348
人物:商议        出场次数:  346
人物:如何        出场次数:  341
人物:主公        出场次数:  330
人物:军士        出场次数:  312
人物:吕布        出场次数:  300
[Finished in 10.7s]

曹贼开头,吕布收尾,好家伙!

啪!

啪啪啪!

但是仔细一看,除了曹操、孔明,还有将军、却说、如此等不是人物名字的词语,也有重复的如玄德和玄德曰、孔明和孔明曰等应该合并在一起的。

好,晓得了晓得了,有了基本盘,我们根据需求来修改代码。

#《三国演义》人物出场统计,把此py文件和《三国演义》文本放在同一文件夹
import jieba
#创建删除词语集合
del_words = ["将军","却说","二人","不可","荆州","不能","如此","商议","如何","主公","军士"]
#打开txt文件并且读取全部文本
file = open("三国演义.txt","r+",encoding='utf-8').read()
#jieba精确模式分词,返回列表words
words =jieba.lcut(file)
dict_counts = {}
for word in words:if len(word)==1: #排除单一字符如“的/地/也“的干扰continueelif word == "诸葛亮" or word == "孔明曰":rword = "孔明"elif word == "关公" or word == "云长":rword = "关羽"elif word == "玄德曰" or word == "玄德":rword = "刘备"elif word == "丞相" or word == "孟德":rword = "曹操"else:rword = worddict_counts[rword] = dict_counts.get(rword,0)+1 #d.get()的用法可见上篇文章
for i in del_words:del dict_counts[i]
items = list(dict_counts.items())#按出场次数降序排序
items.sort(key=lambda x:x[1],reverse=True)
#输出top20名
for i in range(20):word,count = items[i]print("人物:{0:<10}出场次数:{1:>5}".format(word,count))
>>>
========== RESTART: D:/Program Files/Python/Python_Files/jieba/f_print.py ==========
人物:曹操        出场次数: 1434
人物:孔明        出场次数: 1373
人物:刘备        出场次数: 1224
人物:关羽        出场次数:  779
人物:张飞        出场次数:  348
人物:吕布        出场次数:  300
人物:左右        出场次数:  298
人物:军马        出场次数:  290
人物:引兵        出场次数:  277
人物:次日        出场次数:  276
人物:大喜        出场次数:  273
人物:孙权        出场次数:  265
人物:天下        出场次数:  257
人物:于是        出场次数:  256
人物:赵云        出场次数:  255
人物:东吴        出场次数:  252
人物:今日        出场次数:  246
人物:不敢        出场次数:  244
人物:魏兵        出场次数:  243
人物:陛下        出场次数:  231
[Finished in 9.0s]

还有影响词语,我们再来操作一番。

#《三国演义》人物出场统计,把此py文件和《三国演义》文本放在同一文件夹
import jieba
#创建删除词语集合
del_words = ["将军","却说","二人","不可","荆州","不能","如此","商议","如何",
"主公","军士","左右","军马","引兵","次日","大喜","天下","于是","东吴","今日",
"不敢","魏兵","陛下","人马","不知","一人","都督","汉中"]
#打开txt文件并且读取全部文本
file = open("三国演义.txt","r+",encoding='utf-8').read()
#jieba精确模式分词,返回列表words
words =jieba.lcut(file)
dict_counts = {}
for word in words:if len(word)==1: #排除单一字符如“的/地/也“的干扰continueelif word == "诸葛亮" or word == "孔明曰":rword = "孔明"elif word == "关公" or word == "云长":rword = "关羽"elif word == "玄德曰" or word == "玄德":rword = "刘备"elif word == "丞相" or word == "孟德":rword = "曹操"else:rword = worddict_counts[rword] = dict_counts.get(rword,0)+1 #d.get()的用法可见上篇文章
for i in del_words:del dict_counts[i]
items = list(dict_counts.items())#按出场次数降序排序
items.sort(key=lambda x:x[1],reverse=True)
#朕乏了,改成top10吧嘻嘻嘻
for i in range(10):#朕乏了,改成top10吧嘻嘻嘻word,count = items[i]print("人物:{0:<10}出场次数:{1:>5}".format(word,count))
>>>
========== RESTART: D:/Program Files/Python/Python_Files/jieba/f_print.py ==========
人物:曹操        出场次数: 1434
人物:孔明        出场次数: 1373
人物:刘备        出场次数: 1224
人物:关羽        出场次数:  779
人物:张飞        出场次数:  348
人物:吕布        出场次数:  300
人物:孙权        出场次数:  265
人物:赵云        出场次数:  255
人物:司马懿       出场次数:  221
人物:周瑜        出场次数:  217
[Finished in 8.9s]

好,一波操作终于猛如虎,让我们恭喜曹贼同学,祝贺孔明同学,同时安慰刘备同学!

我们单独給曹同学一个见面礼!

print("{0:-^20}".format("下面揭晓本场的最佳人气奖"))
print()
top1_word,top1_count = items[0]
print("本场最佳人气奖是{0:^4}同志!".format(top1_word))
print()
print("{:-^20}".format("颁奖结束,大家欢呼!"))
>>>
========== RESTART: D:/Program Files/Python/Python_Files/jieba/f_print.py ==========
----下面揭晓本场的最佳人气奖----本场最佳人气奖是 曹操 同志!-----颁奖结束,大家欢呼!-----

>>> print("{:-^20}".format("编写结束"))
--------编写结束--------

三国演义人物出场统计代码含义_实例2之《三国演义》人物出场统计相关推荐

  1. 统计代码放在网站php,网站添加简单访客统计代码

    都知道,网站的来访量的多少只有网站主自己知道,是因为在后台安装统计工具,访客想要知道某个网站有多少来访量怎么办呢?其实还可以通过添加代码在网站的前端显示哦,那么今天明星就来说说网站如何添加访客统计代码 ...

  2. matlab 统计数组频数_利用MATLAB进行频率分析(统计数组中元素个数)

    在日常计算,工作中使用MATLAB经常会遇到这样的一个问题:如何统计数组中各数字(元素)出现的频数.频率和累积频率?本文就按照案例演示的方式做一个总结. 第一种方法:调用MATLAB自带的函数tabu ...

  3. 三国演义人物出场统计代码含义_Python分析《三国演义》人物出场次数,孔明第二,赵云第五...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. import jieba excludes = {"将军", ...

  4. retext代码高亮_实例简介Markdown格式

    简介 Markdown 是一种轻量级标记语言,由John Gruber和Aaron Swartz创建,使其成为可读性最大并可再发行的可输入输出的格式. Markdown 并不是为了取代 Html,因为 ...

  5. python计算营业额代码_python计算营业额的代码_python 统计代码行数简单实例

    python 统计代码行数简单实例 送测的时候,发现需要统计代码行数 于是写了个小程序统计自己的代码的行数. #calclate_code_lines.py import os def afileli ...

  6. 从统计代码来谈JS加载的优化

    我有这么一个职业病,每次发现页面很卡,不管谁的网站,都会F12调出Chrome控制台来调试,看看是什么原因导致. 原因其实不外乎这几种: 1.页面文档的加载 2.css/js 的加载 这边就 js 说 ...

  7. 网站底部的统计代码HTML

    原文链接: 网站底部的统计代码HTML – Rookie diary好用的Html网页统计代码,添加后可如图例显示....https://tuyogf.top/%e7%bd%91%e7%ab%99%e ...

  8. 隐藏51la、cnzz统计图标方法及隐藏统计代码方法

    cnzz统计代码如下: <!-- 统计开始--> cnzz统计代码 <!-- 统计结束--> 这个是会显示官方图标的:现在只要用DIV给隐藏掉就OK了,代码前加<div ...

  9. CSDN博客添加量子恒道统计代码步骤

    CSDN博客添加量子恒道统计代码步骤. 1. 去量子恒道网站统计 注册账户: 2. 添加已有的CSDN博客地址: 3. 添加博客后恒道代码里面会给你一个JavaScript脚本,记下里面的一串数字: ...

最新文章

  1. JSR338(Java Persistence)
  2. 修改maven本地仓库位置
  3. Linxu用户登录监测
  4. mysql创建用户以及授权
  5. java占用提示_Java显示使用或已经覆盖了api为啥?
  6. 最佳实践 | 数据库迁云解决方案选型 流程全解析
  7. sysbench的框架实现介绍
  8. linux fork脚本,在Shell脚本中调用另一个脚本的三种方式讲解
  9. 零基础带你学习MySQL—日期函数(十五)
  10. 将Excel VBA封装成exe程序[老贴收藏]
  11. apt-get update : pulic key error
  12. 软件项目管理 project 实验
  13. DevOps落地实践:通讯行业系列:NTT COMWARE之Devaas
  14. 一寸照纯红色底图片_红底证件照换成蓝色背景,边缘怎样处理,才能让照片更自然呢?...
  15. 图形化开发(五)041-Three.js之Camera相机——target焦点和lookAt()方法、OrthographicCamera正交相机、PerspectiveCamera透视相机、相机插件
  16. RAID独立冗余磁盘列阵
  17. 开始LeetCode刷题的第一天
  18. entsel约束条件lisp_autolisp函数
  19. Linux命令查看压缩包文件目录
  20. 学习太极创客 — MQTT(五)发布、订阅和取消订阅

热门文章

  1. 【MyBatis】学习纪要七:缓存(一)
  2. 如何交叉编译Python到ARM-Linux平台(转)
  3. AMD 再次抨击基准测试工具 SYSMark 偏袒英特尔
  4. Android下基于SDL的位图渲染(一)
  5. Ubuntu 组态 Tomcat而每天的错误解决
  6. DllMain使用的注意事项
  7. python字符串格式化之学习笔记
  8. 关于排错:专注思考,细心观察,步步为营
  9. 一段关于Unix与 Linux的暗黑史
  10. 可视化与遗留系统的微服务改造