统计西游记文件中各个人物出现的次数
时间: 2023-10-29 16:06:57 浏览: 76
统计西游记文件中各个人物出现的次数,可以通过正则表达式匹配人物名称,并使用Python中的字典(dictionary)来记录每个人物出现的次数。以下是示例代码:
```python
import re
# 读取文件
with open('西游记.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 定义人物名称列表
names = ['孙悟空', '猪八戒', '沙僧', '唐僧']
# 初始化人物计数器
name_counts = {}
for name in names:
name_counts[name] = 0
# 匹配人物名称并进行计数
for name in names:
pattern = re.compile(name)
count = len(pattern.findall(content))
name_counts[name] = count
# 输出结果
for name, count in name_counts.items():
print(name, count)
```
您只需要将上述代码保存为一个.py文件,然后将西游记的文本文件放在同一目录下,运行代码即可得到各个人物出现次数的统计结果。
相关问题
代码搜索西游记中人物出现的次数
以下是搜索西游记中人物出现次数的 Python 代码示例:
```python
with open('西游记.txt', 'r', encoding='utf-8') as f:
# 读取文件内容
content = f.read()
# 定义人物列表
characters = ['孙悟空', '唐僧', '猪八戒', '沙僧', '白龙马', '观音菩萨']
# 初始化人物出现次数的字典
count_dict = {char: 0 for char in characters}
# 统计人物出现次数
for char in characters:
count_dict[char] = content.count(char)
# 输出结果
for char, count in count_dict.items():
print(f'{char}出现了{count}次')
```
注意:需要先将《西游记》的文本文件(假设文件名为“西游记.txt”)放到代码所在的目录中。另外,此代码示例只是一个简单的演示,实际应用中还需要考虑更多的情况和优化。
用python统计西游记中各个角色的出场次数
可以使用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])
```