编写一个python程序,统计三国演义里的人物

时间: 2024-02-15 16:04:10 浏览: 26
好的,以下是一个简单的Python程序,用于统计《三国演义》中出现的人物及其出现次数: ```python import re # 读取三国演义文本 with open('sgyy.txt', 'r', encoding='utf-8') as f: sgyy_text = f.read() # 使用正则表达式匹配人物名称 pattern = re.compile(r'[\u4e00-\u9fa5]{2,5}(?:·[\u4e00-\u9fa5]{2,5})*') characters = pattern.findall(sgyy_text) # 统计人物出现次数 character_dict = {} for character in characters: if character in character_dict: character_dict[character] += 1 else: character_dict[character] = 1 # 打印结果 for character, count in character_dict.items(): print(f'{character}: {count}') ``` 你可以将程序保存为一个文件,比如`sgyy_characters.py`,然后在命令行中执行`python sgyy_characters.py`,程序会读取当前目录下的`sgyy.txt`文件(请确保该文件存在,并且是UTF-8编码的文本文件),并输出每个人物的出现次数。
相关问题

用python编写程序完成《三国演义》人物出场统计。

以下是两种Python编写程序完成《三国演义》人物出场统计的方法: 1. 使用jieba库进行分词和统计 ```python import jieba # 读取文件 with open('sgyy.txt', 'r', encoding='utf-8') as f: sgyy = f.read() # 分词 words = jieba.lcut(sgyy) # 统计词频 counts = {} for word in words: if len(word) == 1: # 排除单个字符的分词结果 continue else: counts[word] = counts.get(word, 0) + 1 # 输出出现次数最多的前10个人物 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)) ``` 2. 使用numpy库进行统计 ```python import numpy as np # 读取文件 with open('sgyy.txt', 'r', encoding='utf-8') as f: sgyy = f.read() # 将文本转换为数组 text_arr = np.array(list(sgyy)) # 统计出现次数 unique, counts = np.unique(text_arr, return_counts=True) # 将结果合并为字典 result_dict = dict(zip(unique, counts)) # 输出出现次数最多的前10个人物 items = list(result_dict.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)) ```

编写python程序,统计,《三国演义》中前20位出场的人物的次数

好的,我可以帮你编写这个程序。不过在开始之前,需要先将《三国演义》的文本文件准备好,并保存在程序可以访问的路径下。 以下是可能的程序实现方式: ```python import re # 读取《三国演义》文本文件 with open('path/to/sgyy.txt', 'r', encoding='utf-8') as f: sgyy = f.read() # 使用正则表达式匹配出所有人物名称 pattern = r'[\u4e00-\u9fa5]{2,5}(?:·[\u4e00-\u9fa5]{2,5})*' matches = re.findall(pattern, sgyy) # 统计人物出场次数 count_dict = {} for name in matches: count_dict[name] = count_dict.get(name, 0) + 1 # 获取前20个出场最多的人物 top20 = sorted(count_dict.items(), key=lambda x: x[1], reverse=True)[:20] # 输出结果 for i, (name, count) in enumerate(top20): print(f'{i+1}. {name}: {count}次') ``` 需要注意的是,以上程序只是一个可能的实现方式,具体实现可能会因文本格式、文本内容等因素而有所不同,需要根据具体情况进行调整。

相关推荐

最新推荐

recommend-type

MOOC《Python语言程序设计》第6周练习题

讲解2个颇有用处的实例:基本统计值计算和文本词频统计,其中,即有英文Hamlet的词频统计,也有中文《三国演义》的人物出场统计;进一步讲解用于中文分词的jieba库,从此以后,处理中英文文本、做些统计分析将不再是...
recommend-type

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a
recommend-type

matlab建立计算力学课程的笔记和文件.zip

matlab建立计算力学课程的笔记和文件.zip
recommend-type

FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写
recommend-type

matlab基于RRT和人工势场法混合算法的路径规划.zip

matlab基于RRT和人工势场法混合算法的路径规划.zip
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。