三国演义人物出场统计

#Hamlet词频统计(含Hamlet原文文本)

#CalHamletV1.py
def getText():
    txt = open("hamlet.txt", "r").read()
    txt = txt.lower()
    for ch in ‘!"#$%&()*+,-./:;<=>[email protected][\\]^_‘{|}~‘:
        txt = txt.replace(ch, " ")   #将文本中特殊字符替换为空格
    return txt

hamletTxt = getText()
words  = hamletTxt.split()
counts = {}
for word in words:
    counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
    word, count = items[i]
    print ("{0:<10}{1:>5}".format(word, count))
#《三国演义》人物出场统计(上)(含《三国演义》原文文本)

#CalThreeKingdomsV1.py
import jieba
txt = open("threekingdoms.txt", "r", encoding=‘utf-8‘).read()
words  = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(15):
    word, count = items[i]
    print ("{0:<10}{1:>5}".format(word, count))
#《三国演义》人物出场统计(下)(含《三国演义》原文文本)

#CalThreeKingdomsV2.py
import jieba
excludes = {"将军","却说","荆州","二人","不可","不能","如此"}
txt = open("threekingdoms.txt", "r", encoding=‘utf-8‘).read()
words  = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    elif word == "诸葛亮" or word == "孔明曰":
        rword = "孔明"
    elif word == "关公" or word == "云长":
        rword = "关羽"
    elif word == "玄德" or word == "玄德曰":
        rword = "刘备"
    elif word == "孟德" or word == "丞相":
        rword = "曹操"
    else:
        rword = word
    counts[rword] = counts.get(rword,0) + 1
for word in excludes:
    del counts[word]
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
    word, count = items[i]
    print ("{0:<10}{1:>5}".format(word, count))

题目来源:中国mooc

原文地址:https://www.cnblogs.com/mouzaisi/p/12177831.html

时间: 2024-09-30 20:45:24

三国演义人物出场统计的相关文章

运用结巴库分析三国演义的人物出场次数

import jieba txt = open("D:\\三国演义.txt", "r", encoding='ANSI').read() words = jieba.lcut(txt) # 使用精确模式对文本进行分词 counts = {} # 通过键值对的形式存储词语及其出现的次数 for word in words: if len(word) == 1: # 单个词语不计算在内 continue elif word == "诸葛亮" or w

Python 中文文件统计词频 + 中文词云

1. 词频统计: 1 import jieba 2 txt = open("threekingdoms3.txt", "r", encoding='utf-8').read() 3 words = jieba.lcut(txt) 4 counts = {} 5 for word in words: 6 if len(word) == 1: 7 continue 8 else: 9 counts[word] = counts.get(word,0) + 1 10 it

python练习 数字不同数之和+人名最多数统计

数字不同数之和 描述 获得用户输入的一个整数N,输出N中所出现不同数字的和.???????????????????????????????????????????????????????????????????????????????????????????????? 例如:用户输入 123123123,其中所出现的不同数字为:1.2.3,这几个数字和为6.??????????????????????????????????????????????????????????????????????

文本词频统计

本例是数组.字典.列表.jieba(第三方库)的综合应用,我们将对三国演义中出现次数前十的任务进行排名并统计出出现的次数. 程序1: #CalThreeKingdomsV1.pyimport jiebatxt = open("threekingdoms.txt", "r", encoding="utf-8").read()words = jieba.lcut(txt) #利用jieba函数进行分词并返回列表类型counts = {} #创建一个字

[补档]从OI学麻将

背景 作为一名川娃子,怎么能不懂麻将呢= = T1 さきなに~~ [咲 -Saki-] 天才麻将少女什么编 题目 二十一世纪,世界上的麻将竞技人数超过一亿,日本每年也有大规模的全国大赛来对麻将选手进行选拔.从小学到高中,很多学校也设立了麻将部. <天才麻将少女阿知贺篇 episode of side-A>『咲 -Saki- 阿知賀編 episode of side-A』是<天才麻将少女>『咲 -Saki-』的外传,从另一个视角讲述麻将少女们的故事.故事背景设定在<天才麻将少女

jieba库的使用及实例

安装: cmd模式下输入 pip install jieba anaconda对应环境 conda install jieba 分词原理: Jieba分词依靠中文词库 -利用一个中文词库,确定汉字之间的关联概率 -汉字间概率大的组成词组,形成分词结果 -除了分词,用户还可以添加自定义的词组 jieba库的三种模式: -精确模式:把文本精确的切分开,不存在冗余单词 #jieba.lcut(s) jieba.lcut("中国是一个伟大的国家") #output:['中国', '是', '一

跟着名人学知识固然好,踩了坑就会事倍功半

之前我们说了在互联网时代学习,先要搞清楚的一个问题,还有一个重要的关键.于是很多朋友来问我:在互联网时代,该怎么快速学习? 这位同学真是勤奋思考的人,在此鼓掌. 揭晓答案之前,我们说一个人群. 追星族! 追星族遇见喜欢的明星会怎么做? 他们会购买明星的画报,搜集明星的图片,去明星的论坛,听明星的歌,还有参加明星的演唱会.对了,最近王菲刚刚举办了一场演唱会,女神级人物出场,那票就是秒光.能比得上这个速度的,也就春运时候的铁路票了. 像是我之前的一个同事.他是一位不知名明星的粉丝,具体是哪个明星我也

08重编终极版《东邪西毒:终极版》DVD粤语中字

1.东邪西毒].Ashes.of.Time.1994.384p.DVDRip.x264.ac3-DTMM.mkv 这个版本最清晰 ,可惜删减了,只有87分钟,粤语,1.4G. 2.东邪西毒(初始版).Ashes.Of.Time.1994.X264.AAC.D5-MINISD.lever1119.mkv 日本发行的,画质昏黄,可惜是国语的,片头日语说明,100分钟,805M. 3.[东邪西毒].Ashes.of.Time.1994.iNTERNAL.SUBBED.DVDRip.XviD-CFE.A

遍历 集合 数组 增强for Iterator

遍历数组         String[] arr = { "包青天", "白乾涛", "baiqiantao", "bqt", "0909082401", };         for (int i = 0; i < arr.length; i++) {//普通for             System.out.println("第" + (i + 1) + "个元素