统计《三国演义》中人物的出场次数Python
时间: 2023-05-17 11:06:53 浏览: 142
可以使用Python的字典来统计《三国演义》中人物的出场次数。首先,需要将《三国演义》的文本文件读入Python中,然后逐行遍历文本,使用正则表达式匹配人物名字,将人物名字作为字典的键,出场次数作为字典的值,最后按照出场次数从高到低排序输出即可。以下是示例代码:
```python
import re
# 读入《三国演义》文本文件
with open('sgyy.txt', 'r', encoding='utf-8') as f:
sgyy = f.read()
# 使用正则表达式匹配人物名字
pattern = re.compile('[\u4e00-\u9fa5]{2,4}(?=出场)')
matches = pattern.findall(sgyy)
# 统计人物出场次数
counts = {}
for name in matches:
if name in counts:
counts[name] += 1
else:
counts[name] = 1
# 按照出场次数从高到低排序输出
sorted_counts = sorted(counts.items(), key=lambda x: x[1], reverse=True)
for name, count in sorted_counts:
print(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统计三国演义中人物的出场次数
感谢您的提问。这是一个技术问题,可以回答。您可以使用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))
```
以上代码仅供参考,具体实现方式可以根据自身需求进行调整。