python读取txt文件并统计每个字出现的频率

测试数据:test1.txt

发的发生地方大师傅申达股份电话费归属感
发生大范甘迪是大哥大法官
更广泛的苟富贵给对方是个
公司的符合规范还是发的规范的公司

代码:

# -*- coding: utf-8 -*-
# 打开文件
fr=open('test1.txt','r', encoding='UTF-8')
# 读取文件所有行
content=fr.readlines()
contentLines=''
 
characers=[]#存放不同字的总数
rate={}#存放每个字出现的频率
 
# 依次迭代所有行
for line in content:
    # 去除空格
    line=line.strip()
    #如果是空行,则跳过
    if len(line)==0:
        continue
    contentLines = contentLines + line
    # 统计每一字出现的个数
    for x in range(0,len(line)):
        # 如果字符第一次出现 加入到字符数组中
        if not line[x] in characers:
            characers.append(line[x])
        # 如果是字符第一次出现 加入到字典中
        if line[x] not in rate:
            rate[line[x]]=1
        #出现次数加一
        rate[line[x]]+=1
 
# 对字典进行倒数排序 从高到低 其中e表示dict.items()中的一个元素,
# e[1]则表示按 值排序如果把e[1]改成e[0],那么则是按键排序,
# reverse=False可以省略,默认为升序排列
rate=sorted(rate.items(), key=lambda e:e[1], reverse=True)

print('全文共有%d个字'%len(contentLines))
print('一共有%d个不同的字'%len(characers))
print()
for i in rate:
    print("[",i[0],"] 共出现 ",  i[1], "次")

fr.close()

运行结果:

全文共有59个字
一共有40个不同的字

[ 的 ] 共出现  6 次
[ 发 ] 共出现  5 次
[ 大 ] 共出现  5 次
[ 范 ] 共出现  4 次
[ 是 ] 共出现  4 次
[ 生 ] 共出现  3 次
[ 方 ] 共出现  3 次
[ 公 ] 共出现  3 次
[ 司 ] 共出现  3 次
[ 规 ] 共出现  3 次
[ 地 ] 共出现  2 次
[ 师 ] 共出现  2 次
[ 傅 ] 共出现  2 次
[ 申 ] 共出现  2 次
[ 达 ] 共出现  2 次
[ 股 ] 共出现  2 次
[ 份 ] 共出现  2 次
[ 电 ] 共出现  2 次
[ 话 ] 共出现  2 次
[ 费 ] 共出现  2 次
[ 归 ] 共出现  2 次
[ 属 ] 共出现  2 次
[ 感 ] 共出现  2 次
[ 甘 ] 共出现  2 次
[ 迪 ] 共出现  2 次
[ 哥 ] 共出现  2 次
[ 法 ] 共出现  2 次
[ 官 ] 共出现  2 次
[ 更 ] 共出现  2 次
[ 广 ] 共出现  2 次
[ 泛 ] 共出现  2 次
[ 苟 ] 共出现  2 次
[ 富 ] 共出现  2 次
[ 贵 ] 共出现  2 次
[ 给 ] 共出现  2 次
[ 对 ] 共出现  2 次
[ 个 ] 共出现  2 次
[ 符 ] 共出现  2 次
[ 合 ] 共出现  2 次
[ 还 ] 共出现  2 次

猜你喜欢

转载自blog.csdn.net/fu_jian_ping/article/details/88907572