- 参考视频
#!/usr/bin/python
# coding:utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import json
fr= open('t.txt','r')
characers = [] #统计出现过得汉字
stat ={} #字典,统计 每个汉字出现的频率
for line in fr: #line代表的是一行
line = line.strip() #strip() 方法用于移除字符串头尾指定的字符(默认为空格)
line = unicode(line) #转码之后,才是才是中文
#处理空白 如果这一行的长度是0,就是空白
# print line+"--"
if len(line)==0:
continue
for x in range(0,len(line)): #x代表的是每一行里面的每一个字
if not line[x] in characers: #如果这个字不在列表中,则追加到列表
characers.append(line[x])
if not stat.has_key(line[x]): #如果没有这个字,赋值0,有则赋加1
stat[line[x]] = 0 #此处赋值0
stat[line[x]] +=1 #如果第一次,赋值0之后也会走这一步,所以第一次其实是相当于赋值1了
print len(stat) #第一次打印第一行的长度,第二次打印第二行加第一行的长度,一次类推
# print len(stat) #打印的是最后一行的长度
# for k,v in stat.items():
# print k,v
fj = open('res.json','w')
fj.write(json.dumps(stat)) #保存json格式
fj.close()
stat = sorted(stat.iteritems(),key=lambda d:d[1],reverse=True)
#d[1]是按照值排序,d[0]是按照键排序,reverse=True是倒叙 True一定要大写
print type(stat) # 字典是键值对,没有顺序的概念。只有列表才有顺序。此时stat是list
fw = open('res.txt','w')
for item in stat:
fw.write(item[0]+','+str(item[1])+'\n') #item[0]是字符,item[1]是数字,但是写入的时候要统一才行
fw.close()
fr.close()
保存数据的时候或者使用以下方式
fw = open('res.txt', 'w')
for k,v in stat.items():
fw.write(k+','+str(v)+'\n')
fw.close()