目标:1.正确打开文本 2.统计不同的字出现的次数 3.出现的字数进行排序
# -*- coding:utf-8 -*-
fr = open('C:/work/test.txt.txt','r',encoding='gbk',errors='ignore') #-下载的txt文本是 gbk版本的,有的是utf-8版本
characters = []
stat = {}
for line in fr:
line=line.strip() #去掉空白
if len(line)==0: #如果为空,跳过这行
continue
for x in range(0,len(line)):
if line[x] in [' ','\t','\n','。',',','?','(',')',':',':','!','《','》','、','......',';',';','“','”','......','...','(',')',',']:
continue #去除标点符号
if line[x]>=u'\u0030' and line[x]<=u'\u0039': #去除数字
continue
if (line[x]>=u'\u0041' and line[x]<=u'\u005a') or (line[x]>=u'\u0061' and line[x]<=u'\u007a'): #去除字母
continue
if not line[x] in characters: #没有记录的,加入
characters.append(line[x])
if not line[x] in stat: #没有在字典的,加入并设置初始值0
stat[line[x]] = 0
stat[line[x]]+=1 #出现的字,字数+1
print(len(characters))
stat2 = sorted(stat.items(),key = lambda x:x[1],reverse = True) #排序函数
for key,value in stat2:
print(key,value)
fr.close()
结果:
4867
道 10969
不 8815
一 7848
了 7644
那 7492
我 7131
是 6449
来 5921
他 5717
个 5670
行 5597
你 5468
的 5347
者 4967
有 4429
大 4193
得 3809
这 3782
上 3675
去 3657
老 3390
见 3385
三 3343
人 3317
在 3302
下 2951
子 2934
也 2926
僧 2849
里 2814
王 2675
天 2605
师 2605