python实例:利用jieba库,分析统计金庸名著《倚天屠龙记》中人物名出现次数并排序
本实例主要用到python的jieba库
首先当然是安装pip install jieba
这里比较关键的是如下几个步骤:
加载文本,分析文本
txt=open("C:\\Users\\Beckham\\Desktop\\python\\倚天屠龙记.txt","r", encoding='utf-8').read() #打开倚天屠龙记文本
words=jieba.lcut(txt) #jieba库分析文本
对数据进行筛选和处理
for word in words: #筛选分析后的词组
if len(word)==1: #因为词组中的汉字数大于1个即认为是一个词组,所以通过continue结束点读取的汉字书为1的内容
continue
elif word=="教主": #书中教主也指张无忌,即循环读取到教主也认为是张无忌这个名字出现一次,后面类似
rword="张无忌"
elif word=="无忌":
rword="张无忌"
elif word=="义父":
rword="谢逊"
else:
rword=word
counts[rword]=counts.get(rword,0)+1 #对rword出现的频率进行统计,当rword不在words时,返回值是0,当rword在words中时,返回+1,以此进行累计计数 for word in exculdes:#如果循环读取到的词组与exculdes字典内的内容匹配,那么过滤掉(不显示)这个词组
del(counts[word])
创建列表显示和排序
items=list(counts.items())#字典到列表
items.sort(key=lambda x:x[1],reverse=True)#lambda是一个隐函数,是固定写法,以下命令的意思就是按照记录的第2列排序 for i in range(15):#显示前15位数据
word,count=items[i]
print("{0:<10}{1:>10}".format(word,count)) #0:<10左对齐,宽度10,”>10"右对齐
具体脚本如下,每一步都有解析,就不分步解释了
# -*-coding:utf8-*-
# encoding:utf-8 import jieba #倒入jieba库 txt=open("C:\\Users\\Beckham\\Desktop\\python\\倚天屠龙记.txt","r", encoding='utf-8').read() #打开倚天屠龙记文本 exculdes={"说道","甚么","自己","武功","咱们","一声","心中","少林","一个","弟子",
"明教","便是","之中","如何","师父","只见","怎么","两个","没有","不是","不知","这个","不能","只是",
"他们","突然","出来","如此","今日","知道","我们","心想","二人","两人","不敢","虽然","姑娘","这时","众人"
,"可是","原来","之下","当下","身子","你们","脸上","左手","手中","倘若","之后","起来","喝道","武当派","跟着"
,"武当","却是","登时","身上","说话","长剑","峨嵋派","性命","难道","丐帮","兄弟","见到","魔教","不可","心下"
,"之间","少林寺","伸手","高手","一招","这里","正是"} #创建字典,主要用于存储非人物名词,供后面剔除使用 words=jieba.lcut(txt) #jieba库分析文本
counts={} for word in words: #筛选分析后的名词
if len(word)==1: #因为词组中的汉字数大于1个即认为是一个词组,所以通过continue结束掉读取的汉字书为1的内容
continue
elif word=="教主": #书中教主也指张无忌,即循环读取到教主也认为是张无忌这个名字出现一次,后面类似
rword="张无忌"
elif word=="无忌":
rword="张无忌"
elif word=="义父":
rword="谢逊"
else:
rword=word
counts[rword]=counts.get(rword,0)+1 #对rword出现的频率进行统计,当rword不在words时,返回值是0,当rword在words中时,返回+1,以此进行累计计数 for word in exculdes:#如果循环读取到的词组与exculdes字典内的内容匹配,那么过滤掉(不显示)这个词组
del(counts[word]) items=list(counts.items())#字典到列表
items.sort(key=lambda x:x[1],reverse=True)#lambda是一个隐函数,是固定写法,以下命令的意思就是按照记录的第2列排序 for i in range(15):#显示前15位数据
word,count=items[i]
print("{0:<10}{1:>10}".format(word,count)) #0:<10左对齐,宽度10,”>10"右对齐
毫无疑问,张无忌妥妥的主角

参考:
https://gitee.com/huangshenru/codes/clneriovm0sqxw5k89j2h98
https://www.cnblogs.com/0330lgs/p/10648168.html
python实例:利用jieba库,分析统计金庸名著《倚天屠龙记》中人物名出现次数并排序的更多相关文章
- Python之利用jieba库做词频统计且制作词云图
一.环境以及注意事项 1.windows10家庭版 python 3.7.1 2.需要使用到的库 wordcloud(词云),jieba(中文分词库),安装过程不展示 3.注意事项:由于wordclo ...
- python 利用jieba库词频统计
1 #统计<三国志>里人物的出现次数 2 3 import jieba 4 text = open('threekingdoms.txt','r',encoding='utf-8').re ...
- Python实例---利用正则实现计算器[FTL版]
import re # 格式化 def format_str(str): str = str.replace('--', '+') str = str.replace('-+', '-') str = ...
- jieba库词频统计
一.jieba 库简介 (1) jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组:除此之外,jieba 库还提供了增加自定义中文 ...
- jieba库词频统计练习
在sypder上运行jieba库的代码: import matplotlib.pyplot as pltfracs = [2,2,1,1,1]labels = 'houqin', 'jiemian', ...
- python入门之jieba库的使用
对于一段英文,如果希望提取其中的的单词,只需要使用字符串处理的split()方法即可,例如“China is a great country”. 然而对于中文文本,中文单词之间缺少分隔符,这是中文 ...
- python 中文分词库 jieba库
jieba库概述: jieba是优秀的中文分词第三方库 中文文本需要通过分词获得单个的词语 jieba是优秀的中文分词第三方库,需要额外安装 jieba库分为精确模式.全模式.搜索引擎模式 原理 1. ...
- Python爬虫实例(六)多进程下载金庸网小说
目标任务:使用多进程下载金庸网各个版本(旧版.修订版.新修版)的小说 代码如下: # -*- coding: utf-8 -*- import requests from lxml import et ...
- 【python】利用jieba中文分词进行词频统计
以下代码对鲁迅的<祝福>进行了词频统计: import io import jieba txt = io.open("zhufu.txt", "r" ...
随机推荐
- 微信小程序开发--页面之间的跳转
一.navigator--完成页面之间的跳转 1.新建一个页面文件夹 2.在app.json文件中引入页面 "pages": [ "pages/index/index&q ...
- Salesforce Admin篇(三) Delegated Administrator
项目中,我们可能会遇见以下的场景. 1. HR 经理针对申请者和工作相关的表的app会经常需要修改布局查看需要的页面的字段: 2. 开发者将record type对应的picklist values等 ...
- Visual Studio 调试系列1 Debug 与 Release 模式
系列目录 [已更新最新开发文章,点击查看详细] Debug 模式 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序. 在Debug模式下调试,可以在断点处看到 ...
- 《VR入门系列教程》之21---使用Unity开发GearVR应用
使用Unity开发GearVR应用 上一章我们介绍了如何运用Unity3D开发Oculus Rift应用,当然,这个便宜且强大的游戏引擎也可以用于GearVR的应用开发,这时我们需要用到Ocu ...
- tcp 3次握手四次挥手
转载link:http://www.jianshu.com/p/9968b16b607e 最近在复习计算机网络,看到TCP这一章,总结一下. 建立TCP需要三次握手才能建立,而断开连接则需要四次握手. ...
- Linux设备驱动程序学习----1.设备驱动程序简介
设备驱动程序简介 更多内容请参考Linux设备驱动程序学习----目录 1. 简介 Linux系统的优点是,系统内部实现细节对所有人都是公开的.Linux内核由大量复杂的代码组成,设备驱动程序可以 ...
- 初始SpringMVC 完整版
初始SpringMVC 1.SpringMVC 也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的. 2.Java EE ...
- Where is the clone one and how to extract it?
One cannot be in two places at once. Do you know what's "Dual Apps"? Manufactures like Xia ...
- c语言指针汇总
1.指向单个变量的指针: ; int* p = &a; printf("%d", *p); 2.数组的指针 (1)一维数组的指针 ] = { ,,,, }; int *p; ...
- Extjs的文件上传问题
最近做一个ExtJs4.0的文件上传.发现在没有添加 xtype:filefield, 时提交数据form的数据,修改form都能提交,而且返回正常.但是当加入xtype:filefield后,返 ...