以下内容为嵩天老师在课堂上讲解的,分析三国演义中top20人物,也就是出现次数最高的20个人物。为方便童鞋们拷贝,我把代码及解析放到下面,且我多费了点人工,整出top30。通过这个例子可以很好地理解解决一个实际问题的思路:

import jieba      #调用jieba库,前提是已经安装好了这个第三方库,
# 我用的是pycharm教育版,可以在初次使用提示打叹号的位置选择安装jieba,这里安装的是jieba3k,
# 但不幸安装失败,只能按照网上教程将jieba库重新下载到本地然后再安装,安装好了之后,
# 重新建立一个工程,在setting里有两个选项要勾选,在csdn中我的收藏里有相关说明
#下面的是词频统计而非人物统计,要在此基础上修改变成人物统计,加入了excludes列表txt=open("threekingdoms.txt","r",encoding="utf-8").read()
excludes={"将军","却说","荆州","二人","不可","不能","如此","商议","如何","主公","军士","左右","军马","引兵","次日","大喜","天下","东吴","于是","今日","不敢","魏兵","陛下","一人","都督","人马","不知","汉中","只见","众将","后主","蜀兵","上马","大叫","太守","此人","夫人","先主","后人","背后","城中","天子","一面","何不","大军","忽报","先生","百姓","何故","然后","先锋","不如","赶来","原来","令人","江东","下马","喊声","正是","徐州","忽然","因此","成都","不见","未知","大败","大事","之后","一军","引军","起兵","军中","接应","进兵","大惊","可以","以为","大怒","不得","心中","下文","一声","追赶","粮草","曹兵","一齐","分解","回报","分付","只得","出马","三千","大将","许都","随后","报知","前面","之兵","且说","众官","洛阳","领兵","何人","星夜","精兵","城上","之计","不肯","相见","其言","一日","而行","文武","襄阳","准备","若何","出战","亲自","必有","此事","军师","之中","伏兵","祁山","乘势","忽见","大笑","樊城","兄弟","首级","立于","西川","朝廷","三军","大王","传令","当先","五百","一彪","坚守","此时","之间","投降","五千","埋伏","长安","三路","遣使"}
#这个excludes表是随着每次运行结果不断再手工添加一些不是人物的词汇扩容的,
# 后面的一些词出现的频率在160左右较多,90左右的也很多
# 其实人物排序也不准,比如都督,如果指周瑜的话,周瑜的排名可能会再靠前
words=jieba.lcut(txt)  #使用jieba的精确模式,返回一个列表类型的分词结果
counts={}
for word in words:  #这句关键,用words列表中的每个单词去索引字典,# 已经有这个键的话就把相应的值加1,没有的话就取值为0,再加1if 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=wordcounts[rword]=counts.get(rword,0)+1
for word in excludes:del counts[word]   #将在excludes表中的词也去除
items=list(counts.items())  #将字典类型转换为list类型便于操作
items.sort(key=lambda x:x[1],reverse=True)  #对一个列表,所有键值对的第2个元素进行排序,
# 默认是false,是从小到大,True的话就是从大到小,注意里面的'key='暂时记住这句,这是list的sort排序的lambda方法
for i in range(30):word,count=items[i]if len(word)==2:print('{0:<5} {1:<12} {2:>6}'.format(i+1,word,count))#发现名字中有三个字的如司马懿 夏侯惇等,显示时最右边会超出去一个字符,# 在于中间的{1:<12},汉字只算一个字符的话,会比空格位更宽一点,加个这样的if else判断下使文字对齐else:print('{0:<5} {1:<11} {2:>6}'.format(i+1,word,count))

中国大学MOOC课程《Python语言程序设计》第6章 文本词频人物统计 threekingdoms三国演义代码及解析相关推荐

  1. 中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周)

    中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周)  Lan   2020-05-03 14:21   369 人阅读  0 条评论 感谢中国大学MOOC提供的学习平台 ...

  2. 中国大学mooc慕课python语言程序设计答案_中国大学MOOC(慕课)_Python语言程序设计基础_网课答案...

    参考答案如下 有一堆零件( 100---200 之间),中国如果分成 4 个零件一组的若干组,中国则多 2 个零件:若分成 7 个零件一组,则多 3 个零件:若分 9 个零件一组,则多 5 个零件.下 ...

  3. 中国大学MOOC哈工大C语言程序设计第9周编程题在线测试

    中国大学MOOC哈工大C语言程序设计第9周编程题在线测试 1.重复数字检查(4分) 题目内容: 从键盘输入一个数,检查这个数中是否有重复出现的数字.如果这个数中有重复出现的数字,则显示"Re ...

  4. 中国大学moocpython_中国大学MOOC(慕课)_Python 语言程序设计_测试题及答案

    中国工程智慧消防电气答案建筑节测树章试题. 大学答案满分中国大学答案件工_软期末程_. 慕课知到智慧单元答案基础医学实验树.梦>知到智慧红楼伟大的<案及答_测树_试题.知到学生_考_大案健 ...

  5. 慕课python第五周测试答案_中国大学mooc慕课_Python 语言程序设计_测试题及答案...

    以下关于病毒的描述中,正确的说法是(). A.只要不上网,就不会感染病毒B.只要安装最好的 从发展上看,计算机将向着哪两个方向发展?(). A.系统化和应用化B.网络化和智能化C.巨型 一张软磁盘中已 ...

  6. 0098 高级程序设计 c语言 在线作业,中国大学MOOC(C语言程序设计精髓)作业

    第七周 在线编程题 1.n层嵌套平方根的计算(4分) 题目内容: 编写程序利用递归法实现如下所示n层嵌套平方根的计算: 递归函数原型:double Y(double x, int n): 程序运行结果 ...

  7. 哈工大c语言编程题中国大学mooc第四周,中国大学MOOC哈工大C语言程序设计精髓第六周编程题答案.doc...

    下面代码的功能是将百分制成绩转换为 5 分制成绩,具体功能是: 如果用户输入的是 非法 字符或者不在合理区间内的数据 (例如输入的是 a,或者 102 ,或-45 等),则程序输出 Input err ...

  8. 中国大学MOOC课程《Python语言程序设计》课后练习第一周

    中国大学MOOC课程<Python语言程序设计>课后练习第一周 1.字符串拼接 python从2.6版本后增加了format函数,用来代替%s,%r等格式化字符串: # -*- codin ...

  9. 中国大学 MOOC 课程 《Python 语言程序设计》第六周

    中国大学 MOOC 课程 <Python 语言程序设计>第六周 一.lambda函数 1,lambda的一般形式是关键字lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式.l ...

最新文章

  1. 计算机连接外设的端口驱动,将 KMDF 外设驱动程序连接到串行端口
  2. python自然语言处理库_Python 自然语言处理(NLP)工具库汇总
  3. 【youcans 的 OpenCV 例程 200 篇】107. 退化图像的维纳滤波
  4. php去掉字符串末尾数字,PHP-RegEx:删除字符串末尾的数字,并删除特定字符串后的文本...
  5. 2台主机的docker互相通信的方法
  6. 做网页很实用代码集合和CSS制作网页小技巧整理
  7. 【华为敏捷/DevOps实践】8. 持续交付,持续部署,傻傻分不清楚
  8. qgis二次开发环境搭建(超级详细)
  9. 两男子骑摩托车抢夺宴席礼金 警方:嫌疑人已被抓获
  10. PAT (Basic Level) Practice1030 完美数列
  11. 【北大知识图谱】知识图谱的关键技术及其智能应用
  12. 【渝粤教育】广东开放大学 操作系统原理与应用 形成性考核 (46)
  13. C 中细节问题的试题
  14. 跨境电商自建独立站CMS
  15. Linux打开终端命令
  16. 关于用友财务总账的数据库关系
  17. 软件破解技术之API替换
  18. 在 WSO2 ESB 5.0.0 中使用 MyBatis 框架
  19. 2018计算机中文期刊影响因子排名,2018年最新影响因子:839种5分以上期刊名录
  20. 04-HTML标签:排版标签

热门文章

  1. openssl 安装
  2. 利用360tools-master进行计算S-PSNR,CPP-PSNR,WS-PSNR
  3. 解读手机拍照的各个参数(编辑)
  4. 小散, 教你如何进行集合竞价
  5. 32位系统处理64位数据
  6. nginx 代理tcp长连接短连接配置
  7. STM32电子时钟 WATCHX-NWATCH( 开源)
  8. pwnable.kr |Toddler's Bottle |fd
  9. KODI配合Siri实现语音控制
  10. 美研究称留在手机上的分子痕迹可暴露个人信息