python统计文章字数

#!/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()
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃呓语阅读 51,909评论 10赞 199
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,500评论 25赞 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,189评论 19赞 139
  • 昔闻金川有山,驴友常登顶设帐,观夜星,赏日出,心向往之。山即搁船尖,顶即光明顶。国庆与友约,从上海、济南各携家小驱...
    徽山人阅读 574评论 0赞 1
  • 昨天一早好像诸事不顺,我可能又聚焦到负面了,早上儿子起床,问他前天晚上几点睡的?他回我11:30,我说我11点多睡...
    小米粒涵妈阅读 272评论 0赞 0

友情链接更多精彩内容