使用python统计三国演义中人物的出场次数
时间: 2023-10-30 11:05:10 浏览: 134
感谢您的提问。这是一个技术问题,可以回答。您可以使用Python中的字典来统计三国演义中人物的出场次数。具体实现可以参考以下代码:
```
import re
# 读入文件
with open('threekingdoms.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 使用正则表达式匹配人物名字
pattern = re.compile('[^,。?!\n]+')
results = pattern.findall(content)
# 统计每个人物出现次数
counts = {}
for name in results:
if name in counts:
counts[name] += 1
else:
counts[name] = 1
# 输出结果
for name, count in counts.items():
print("{}: {}".format(name, count))
```
以上代码仅供参考,具体实现方式可以根据自身需求进行调整。
相关问题
python三国演义人物 统计分析_Python统计三国演义主要人物出场次数
好的,我可以为您介绍如何使用Python进行统计分析,统计三国演义主要人物出场次数。
首先,我们需要将《三国演义》的文本数据导入Python中。您可以在网上搜索到该书的txt格式文件,将其下载到本地。
接着,我们需要使用Python的文件读取功能将文本数据导入到程序中。可以使用以下代码:
```python
with open('三国演义.txt', 'r', encoding='utf-8') as f:
text = f.read()
```
以上代码中,我们使用`open()`函数打开文本文件,并使用`read()`方法读取其中的内容。由于该书是以utf-8编码格式保存的,因此我们需要指定`encoding='utf-8'`来正确读取其中的中文字符。
接下来,我们需要使用Python的正则表达式模块`re`来匹配人物名称。可以使用以下代码:
```python
import re
# 匹配人物名称
pattern = re.compile('[\u4e00-\u9fa5]{2,5}(?:·[\u4e00-\u9fa5]{2,5})*')
names = re.findall(pattern, text)
```
以上代码中,我们使用`re.compile()`函数定义了一个正则表达式模式,用于匹配人物名称。该模式匹配2到5个汉字,中间可以包含一个或多个“·”符号。然后使用`re.findall()`方法在整个文本中查找符合模式的所有字符串,并将其保存在`names`列表中。
最后,我们可以使用Python的`collections`模块中的`Counter`类来统计每个人物出现的次数。可以使用以下代码:
```python
from collections import Counter
# 统计人物出现次数
name_counts = Counter(names)
```
以上代码中,我们使用`Counter`类对`names`列表中的人物名称进行计数,并将结果保存在`name_counts`字典中。
现在,`name_counts`字典中存储了三国演义中所有人物出现的次数。您可以使用以下代码查看前10名出场次数最多的人物:
```python
# 输出前10名出场次数最多的人物
top10 = name_counts.most_common(10)
for name, count in top10:
print(name, count)
```
以上代码中,我们使用`most_common()`方法获取出场次数最多的前10名人物,并使用`for`循环逐个输出其名称和出场次数。
希望以上内容能够帮助您完成Python统计三国演义主要人物出场次数的任务。
在python中请用jieba完成统计三国演义人物的出场次数
好的,我会按照你的要求进行回答。为了完成该任务,你需要首先安装jieba库。你可以使用以下命令进行安装:
```
pip install jieba
```
然后,你需要获取三国演义的原始文本数据,并将其放入到一个文本文件中,比如"sgyy.txt"。接下来,你可以使用以下代码进行统计人物出场次数:
```python
import jieba
# 读取文件内容
with open('sgyy.txt', 'r', encoding='utf-8') as f:
sgyy = f.read()
# 使用jieba分词
words = jieba.lcut(sgyy)
# 统计人物出现次数
counts = {}
for word in words:
if len(word) == 1: # 过滤掉单个字的词语
continue
elif word == '诸葛亮' or word == '孔明曰': # 同一人物,不同称呼,视为一个
rword = '孔明'
elif word == '关公' or word == '云长':
rword = '关羽'
elif word == '玄德' or word == '刘皇叔' or word == '刘备曰':
rword = '刘备'
elif word == '孟德' or word == '曹贼':
rword = '曹操'
else:
rword = word
counts[rword] = counts.get(rword, 0) + 1
# 输出结果
for word in sorted(counts, key=lambda x: counts[x], reverse=True):
print(f'{word}\t{counts[word]}')
```
运行以上代码,你就可以得到统计结果了。注意,由于jieba分词并不是完全准确的,因此统计结果也可能存在一些误差,需要根据具体情况进行调整。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)