《三国演义》是中国四大名著之一,该书描述了100多个典型人物。统计书中典型人物名字出现的次数能够侧面反映人物的重要性。请给出这个计算问题的IPO描述,重点描述其中的算法部分。出程序。
时间: 2023-05-19 20:02:16 浏览: 337
IPO描述:
输入:《三国演义》文本文件
处理:统计每个典型人物名字在文本中出现的次数
输出:每个典型人物名字在文本中出现的次数,按照出现次数从高到低排序
算法部分:
1. 读取《三国演义》文本文件,将其转化为字符串。
2. 定义一个字典,用于存储每个典型人物名字在文本中出现的次数。
3. 遍历文本字符串,对于每个典型人物名字,使用正则表达式匹配其出现的次数,并将其存储到字典中。
4. 对字典按照值进行排序,得到每个典型人物名字在文本中出现的次数,按照出现次数从高到低排序。
5. 输出排序后的结果。
代码实现:
import re
def count_characters(filename):
with open(filename, 'r', encoding='utf-8') as f:
text = f.read()
characters = ['曹操', '刘备', '孙权', '诸葛亮', '周瑜', '关羽', '张飞', '赵云', '马超', '黄忠', '魏延', '姜维', '庞统', '徐庶', '司马懿', '张辽', '许褚', '夏侯惇', '夏侯渊', '张郃', '于禁', '甄姬', '貂蝉', '黄月英', '孟获', '祝融', '大乔', '小乔', '甘宁', '吕布', '华佗', '袁绍', '袁术', '董卓', '吕蒙', '陆逊', '周泰', '凌统', '丁奉', '孙策', '孙坚', '鲁肃', '华雄', '公孙瓒', '颜良', '文丑', '张角', '于吉', '蔡文姬', '荀彧', '程昱', '郭嘉', '贾诩', '荀攸', '徐晃', '典韦', '许攸', '高顺', '张任', '张昭', '张纮', '吕葆中', '吕虔', '吕翔', '陈宫', '田丰', '沮授', '逢纪', '刘表', '刘璋', '刘备妻妾', '孙尚香', '甘夫人', '黄月英', '王异', '糜夫人', '孙夫人', '大乔', '小乔', '步练师', '貂蝉', '王允', '董卓部下', '华雄部下', '董卓女儿', '吕布部下', '袁绍部下', '袁术部下', '曹操部下', '刘备部下', '孙权部下', '蜀汉臣子', '魏国臣子', '吴国臣子', '群雄', '其他']
character_count = {}
for character in characters:
pattern = re.compile(character)
count = len(pattern.findall(text))
character_count[character] = count
sorted_count = sorted(character_count.items(), key=lambda x: x[1], reverse=True)
for item in sorted_count:
print(item[0], item[1])
count_characters('sanguoyanyi.txt')
阅读全文