txt文本字数统计和出现字数的排序(西游记.txt)

目标: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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值