三国演义人物出场次数

三国演义人物出场次数,出场顺序就不统计了,需要排除的集合太长,丞相这个词语有点问题,代码如下

import jieba
txt = open(r'c:\Users\今天还下雨\desktop\threekingdoms.txt','r',encoding='utf-8').read()
excludes = {'将军','却说','荆州','二人','不可','不能','如此','商议','如何','主公','左右','军士',\
            '军马','引兵','次日','大喜','天下','东吴','于是','今日','不敢','魏兵','陛下','不知','一人','不敢',\
            '不知','人马','都督','汉中','只见','蜀兵'}
words = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    elif word =='诸葛孔明' or word == '孔明曰' or word == '诸葛亮':
        rword = '孔明'
    elif word =='关公' or word == '云长':
        rword = '关羽'
    elif word =='玄德' or word == '玄德曰':
        rword = '刘备'
    elif word =='孟德' or word == '丞相':#丞相也可能是说诸葛亮
        rword = '曹操'
    else:
        rword  = word
    counts[rword] = counts.get(rword, 0) + 1
for word in excludes:
    del counts[word]
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(30):
    word,count = items[i]
    print('{0:<10}{1:>5}'.format(word,count))

统计《三国演义人物出场次数通常需要先获取文本数据,然后进行清洗和解析,提取出人物名称及其对应的出场信息。Python中有多种方法可以实现这个过程,例如使用正则表达式、BeautifulSoup库抓取网络版的文本,或者直接读取已有的电子书文件(如果已有文本格式的数据)。 下面是一个简单的示例步骤,假设我们已经有了包含人物出场记录的文本文件: 1. **数据预处理**: - 读取文本文件,将内容分解成单独的行或句子。 - 对文本进行分词,提取出每个句子中的关键词,这里可以假设人物名字是名词短语。 2. **构建字典**: - 创建一个空字典,键是人物名称,值初始为0。 - 遍历每一条记录,检查是否匹配到人物名。如果是,就在字典中相应的人物名对应的位置加一。 3. **统计和输出**: - 计算每个字符的出场次数,并按照名称排序,输出结果。 以下是伪代码形式: ```python import re # 假设有个名为'trpley.txt'的文件,存储了人物出场记录 with open('trpley.txt', 'r') as file: lines = file.readlines() # 定义人物出场次数的字典 character_counts = {} # 分析每一行 for line in lines: # 使用正则表达式匹配人物名,这里仅做简单示例,实际应用可能需要更复杂的命名实体识别 for match in re.findall(r'\b[甲乙丙丁等姓]+[一二三四等数]+', line): character_counts[match] = character_counts.get(match, 0) + 1 # 按出场次数降序排序并打印结果 sorted_characters = sorted(character_counts.items(), key=lambda x: x[1], reverse=True) for name, count in sorted_characters: print(f'{name}: {count} 出场') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值