本实例主要用到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库,分析统计金庸名著《倚天屠龙记》中人物名出现次数并排序的更多相关文章

  1. Python之利用jieba库做词频统计且制作词云图

    一.环境以及注意事项 1.windows10家庭版 python 3.7.1 2.需要使用到的库 wordcloud(词云),jieba(中文分词库),安装过程不展示 3.注意事项:由于wordclo ...

  2. python 利用jieba库词频统计

    1 #统计<三国志>里人物的出现次数 2 3 import jieba 4 text = open('threekingdoms.txt','r',encoding='utf-8').re ...

  3. Python实例---利用正则实现计算器[FTL版]

    import re # 格式化 def format_str(str): str = str.replace('--', '+') str = str.replace('-+', '-') str = ...

  4. jieba库词频统计

    一.jieba 库简介 (1) jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组:除此之外,jieba 库还提供了增加自定义中文 ...

  5. jieba库词频统计练习

    在sypder上运行jieba库的代码: import matplotlib.pyplot as pltfracs = [2,2,1,1,1]labels = 'houqin', 'jiemian', ...

  6. python入门之jieba库的使用

    对于一段英文,如果希望提取其中的的单词,只需要使用字符串处理的split()方法即可,例如“China is a great country”.   然而对于中文文本,中文单词之间缺少分隔符,这是中文 ...

  7. python 中文分词库 jieba库

    jieba库概述: jieba是优秀的中文分词第三方库 中文文本需要通过分词获得单个的词语 jieba是优秀的中文分词第三方库,需要额外安装 jieba库分为精确模式.全模式.搜索引擎模式 原理 1. ...

  8. Python爬虫实例(六)多进程下载金庸网小说

    目标任务:使用多进程下载金庸网各个版本(旧版.修订版.新修版)的小说 代码如下: # -*- coding: utf-8 -*- import requests from lxml import et ...

  9. 【python】利用jieba中文分词进行词频统计

    以下代码对鲁迅的<祝福>进行了词频统计: import io import jieba txt = io.open("zhufu.txt", "r" ...

随机推荐

  1. NameNode故障处理方法

    NameNode故障处理方法 简述 NameNode故障后,可以通过下列两种方式进行恢复数据: 方法一(手动):将SecondaryNameNode文件下的数据复制到NameNode中 方法二(程序) ...

  2. Spring Boot从入门到实战(十):异步处理

    原文地址:http://blog.jboost.cn/2019/07/22/springboot-async.html 在业务开发中,有时候会遇到一些非核心的附加功能,比如短信或微信模板消息通知,或者 ...

  3. 将个人网站主页设置为Tomcat默认打开页面

    步骤: 1.打开server.xml,在</Host>的上一行添加内容格式如下 <Context path="" reloadable="true&qu ...

  4. Spring Boot如何设计防篡改、防重放攻击接口

    Spring Boot 防篡改.防重放攻击 本示例要内容 请求参数防止篡改攻击 基于timestamp方案,防止重放攻击 使用swagger接口文档自动生成 API接口设计 API接口由于需要供第三方 ...

  5. activiti工作流委托功能的设计和实现

    最近公司开发一个项目,客户提出了一个需求,用户在出差的时候,可以将自己的工作进行委托.可以指定委托时间.委托工作内容.指定委托人等等内容. 然后我就上网查询资料,发现activiti工作流本身并不支持 ...

  6. mysql协议分析2---认证包

    主人看到navicat和mysql在那嘻嘻哈哈,眉来眼去的,好不快乐,忽然也想自己写个程序,直接去访问Mysql,虽然现在已经有很多现成的中间件可以直接拿来用了,程序只要负责写sql语句就行了,但是主 ...

  7. unc路径

    1.什么是UNC路径?UNC路径就是类似\\softer这样的形式的网络路径.UNC为网络(主要指局域网)上资源的完整 Windows 2000 名称.格式: \\servername\sharena ...

  8. Redis的HelloWorld

    1.安装完成的Redis: linux安装的应用默认会在:usr/local/bin. 1.redis-benchmark:性能测试工具,是redis提供的一个高并发程序,可以在自己本机运行,看看自己 ...

  9. Java秒杀系统实战系列~商品秒杀代码实战

    摘要: 本篇博文是“Java秒杀系统实战系列文章”的第六篇,本篇博文我们将进入整个秒杀系统核心功能模块的代码开发,即“商品秒杀”功能模块的代码实战. 内容: “商品秒杀”功能模块是建立在“商品详情”功 ...

  10. 放出一批学生管理系统jsp源码,部分有框架

    基于jsp+struts 2的学生管理系统eclipse - 源码码头   https://www.icodedock.com/article/25.html 基于jsp+mysql的JSP学生成绩管 ...