在做杂项的时候碰到需要统计一个txt中的所有字母的次数,并提取次数最多的前16位,所以写了个脚本记录一下
栗子txt内容如下:
# -*- coding:utf-8 -*-
#Author: M0c1nu7
#Python3
import re
file = open('C:/Users/Administrator/Downloads/attachment/read/11.txt')#读取文件的路径
line = file.readlines()
file.seek(0,0)
file.close()
result = {
}#使用字典来保存查询信息
for i in range(97,123):#26位小写字母
count = 0
for j in line:
find_line = re.findall(chr(i),j.lower())#查找出每一行匹配的字母,先转换小写再比对
count += len(find_line)#把每一行的查询结果数相加
result[chr(i)] = count#向字典存入每个字母的最终查询的结果
res = sorted(result.items(),key=lambda item:item[1],reverse=True)#对字典的value进行排序,降序,res是一个可迭代对象
num = 1
for x in res:#递归输出一下字典的每一个元素
print('频数第{0}: '.format(num),x)
num += 1
运行结果如下:
PS C:\Users\Administrator\Desktop> python .\word.py
频数第1: ('e', 39915)
频数第2: ('t', 29048)
频数第3: ('a', 26590)
频数第4: ('o', 26141)
频数第5: ('h', 22531)
频数第6: ('n', 21825)
频数第7: ('r', 21650)
频数第8: ('i', 20815)
频数第9: ('s', 19714)
频数第10: ('d', 16617)
频数第11: ('l', 14594)
频数第12: ('u', 9755)
频数第13: ('g', 8619)
频数第14: ('y', 8619)
频数第15: ('w', 8397)
频数第16: ('m', 7394)
频数第17: ('f', 6857)
频数第18: ('c', 6696)
频数第19: ('p', 5548)
频数第20: ('b', 5328)
频数第21: ('k', 4009)
频数第22: ('v', 2908)
频数第23: ('q', 420)
频数第24: ('x', 383)
频数第25: ('j', 370)
频数第26: ('z', 264)