文件操作之extract_name
三国演义的文档自己可以网上搜索下载,这里也提供一个备用地址:http://www.janpn.com/
下载后文档改名为sanguoyanyi.txt就好了
name.txt的内容如下图,随意选的几个人物:
提取人物名字,并统计出现的次数
1 import re 2 def find_item(hero): 3 with open('sanguoyanyi.txt', encoding='utf-8') as f: 4 data = f.read().replace('\n', '') 5 name_num = re.findall(hero, data) 6 print('\033[31:1m%s\033[0m' % hero, len(name_num), '次') 7 # print语句用来检测运行效果,开始没有用len函数,发现没有统计次数,而是出现一次就赋值添加一次 8 # 所以后来使用len(name_num)函数来计数 9 return len(name_num) 10 11 names_dict = {} 12 with open('name.txt', encoding='utf-8') as f: 13 for line in f: 14 names = line.split('|') 15 for n in names: 16 name_num = find_item(n) 17 names_dict[n] = name_num 18 names_sorted1 = sorted(names_dict.items(), key=lambda item:item[1], reverse=True) 19 print('按次数降序排列:', names_sorted1) 20 names_sorted2 = sorted(names_dict.items()) 21 print('按姓名排列:', names_sorted2)