用python统计西游记中各个角色的出场次数
时间: 2023-10-29 15:07:14 浏览: 59
可以使用Python中的字典(dict)来统计各个角色的出场次数。
具体实现步骤如下:
1. 打开《西游记》文本文件,读取文本内容。
```python
with open('西游记.txt', 'r', encoding='utf-8') as f:
content = f.read()
```
2. 定义一个空字典,用于存储角色出现的次数。
```python
roles = {}
```
3. 使用正则表达式匹配文本中的角色名,并将角色名作为字典的键,出现次数作为字典的值。
```python
import re
pattern = re.compile('[\u4e00-\u9fa5]{2,4}(?:·[\u4e00-\u9fa5]{2,4})*') # 匹配中文名字
names = pattern.findall(content) # 查找所有符合规则的名字
for name in names:
if name in roles:
roles[name] += 1
else:
roles[name] = 1
```
4. 对字典按照值进行排序,输出出现次数前十的角色名和出现次数。
```python
sorted_roles = sorted(roles.items(), key=lambda x: x[1], reverse=True) # 按照值排序
for i in range(10):
print(sorted_roles[i][0], sorted_roles[i][1])
```
完整代码如下:
```python
import re
with open('西游记.txt', 'r', encoding='utf-8') as f:
content = f.read()
roles = {}
pattern = re.compile('[\u4e00-\u9fa5]{2,4}(?:·[\u4e00-\u9fa5]{2,4})*')
names = pattern.findall(content)
for name in names:
if name in roles:
roles[name] += 1
else:
roles[name] = 1
sorted_roles = sorted(roles.items(), key=lambda x: x[1], reverse=True)
for i in range(10):
print(sorted_roles[i][0], sorted_roles[i][1])
```