统计 《三国演义》中每个人物的出场次数,输出前10名
时间: 2024-03-02 13:48:44 浏览: 195
好的,你可以使用以下Python代码实现:
```python
import re
# 读取文本内容
with open('sgyy.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 使用正则表达式找出所有人名
pattern = re.compile('[\u4e00-\u9fa5]{2,4}(?:·[\u4e00-\u9fa5]{2,4})*')
names = pattern.findall(content)
# 统计每个人名出现的次数
name_count = {}
for name in names:
if name in name_count:
name_count[name] += 1
else:
name_count[name] = 1
# 按出场次数从大到小排序
top10 = sorted(name_count.items(), key=lambda x: x[1], reverse=True)[:10]
# 输出前10名
for i, (name, count) in enumerate(top10):
print(f'{i+1}. {name} 出场次数:{count}')
```
其中,`sgyy.txt`是《三国演义》的文本文件,需要与代码文件在同一目录下。代码会使用正则表达式找出所有人名,并统计每个人名出现的次数。最后,按出场次数从大到小排序,输出前10名。
相关问题
统计《三国演义》中每个人物的出场次数,输出前10名。
好的,可以使用Python的文本处理和数据结构操作来完成这个任务。可以按照以下步骤操作:
1. 打开《三国演义》的文本文件,读取其中的内容。
2. 使用正则表达式或字符串操作,提取每个人物出现的次数,并存储到一个字典中。
3. 对字典按照出现次数进行排序,取出前10名。
4. 输出结果。
下面是代码实现:
```python
import re
# 打开《三国演义》的文本文件,读取其中的内容
with open('sanguo.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 使用正则表达式或字符串操作,提取每个人物出现的次数,并存储到一个字典中
pattern = r'[\u4e00-\u9fa5]{2,5}(?:·[\u4e00-\u9fa5]{2,5})*'
results = re.findall(pattern, content)
counts = {}
for result in results:
if result in counts:
counts[result] += 1
else:
counts[result] = 1
# 对字典按照出现次数进行排序,取出前10名
top10 = sorted(counts.items(), key=lambda x: x[1], reverse=True)[:10]
# 输出结果
print('三国演义中出现次数前10的人物为:')
for i, (name, count) in enumerate(top10):
print('第{}名:{},出现次数:{}'.format(i+1, name, count))
```
这样,就完成了对《三国演义》中每个人物的出场次数统计,并输出了前10名出场次数最多的人物。
选择《三国演义》,统计人物出场次数,输出出场次数最多的前10位人物及出场次数。
好的,我可以帮你实现这个功能。以下是代码实现:
```python
import re
# 读取文本文件
with open('三国演义.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 统计人物出现次数
pattern = r'[\u4e00-\u9fa5]{2,4}(?:·[\u4e00-\u9fa5]{2,4})*'
names = re.findall(pattern, text)
name_counts = {}
for name in names:
if name in name_counts:
name_counts[name] += 1
else:
name_counts[name] = 1
# 输出出现次数最多的前10位人物及出现次数
top_10_names = sorted(name_counts.items(), key=lambda x: x[1], reverse=True)[:10]
print("出场次数最多的前10位人物及出场次数:")
for name, count in top_10_names:
print(name, count)
```
代码首先读取本地的《三国演义》文本文件,然后使用正则表达式匹配人物名字,统计每个人物在文本中出现的次数,并将结果保存在`name_counts`字典中。最后,使用`sorted()`函数将`name_counts`字典按照出现次数从大到小排序,输出出场次数最多的前10位人物及其出现次数。
需要注意的是,以上代码只能统计文本中出现的人物名字,对于没有出现在文本中的人物不会被统计。另外,如果同一个人物名字有多种不同的写法,统计结果可能存在一定的误差。
阅读全文