1 import re 2 3 4 def find_item(hero): 5 # 读取文件 6 with open('sanguo_utf8.txt', encoding='utf-8') as f1: 7 # 去掉内容中的换行,将文本变为一行 8 data = f1.read().replace(' ', '') 9 # 使用正则表达式,返回传入参数的总出现情况。 10 # 当使用len()方法时,则会返回该参数总的出现次数 11 name_num = re.findall(hero, data) 12 print('主角 %s 出现了 %s 次' % (hero, len(name_num))) 13 return len(name_num) 14 15 16 name_dict = {} 17 # 读取姓名文件 18 with open('name.txt', encoding='utf-8') as f2: 19 # 将姓名以'|'进行分割 20 for line in f2: 21 names = line.split('|') 22 # 遍历所有姓名 23 for n in names: 24 # 将姓名作为参数传递给统计姓名出现次数的函数 25 # 返回每个姓名出现的次数 26 name_num = find_item(n) 27 # 将每个姓名作为键,出现次数作为值。传给num_dict[]字典 28 name_dict[n] = name_num
打印结果:
主角 諸葛亮 出现了 157 次
主角 關羽 出现了 9 次
主角 劉備 出现了 297 次
主角 曹操 出现了 940 次
主角 孫權 出现了 321 次
主角 關羽 出现了 9 次
主角 張飛 出现了 364 次
主角 呂布 出现了 342 次
主角 周瑜 出现了 240 次
主角 趙雲 出现了 313 次
主角 龐統 出现了 82 次
主角 司馬懿 出现了 287 次
主角 黃忠 出现了 189 次
主角 馬超 出现了 219 次