import jieba txt = open("西游记.txt", "r", encoding='utf-8').read() words = jieba.lcut(txt) # 使用精确模式对文本进行分词 counts = {} # 通过键值对的形式存储词语及其出现的次数 for word in words: if len(word) == 1: continue elif word in ["大圣", "老孙", "行者", "孙大圣", "孙行者", "猴王", "悟空", "齐天大圣", "猴子"]: rword = "孙悟空" elif word in ["师父", "三藏", "圣僧"]: rword = "唐僧" elif word in ["呆子", "八戒", "老猪"]: rword = "猪八戒" elif word == "沙和尚": rword = "沙僧" elif word in ["妖精", "妖魔", "妖道"]: rword = "妖怪" elif word == "佛祖": rword = "如来" elif word == "三太子": rword = "白马" else: rword = word counts[rword] = counts.get(rword, 0) + 1 items = list(counts.items()) # 将键值对转换成列表 items.sort(key=lambda x: x[1], reverse=True) # 根据词语出现的次数进行从大到小排序 for i in range(20): word, count = items[i] print("{0:<10}{1:>5}".format(word, count))
运行结果