Python找出文件中使用率最高的汉字实例详解


Posted in Python onJune 03, 2015

本文实例讲述了Python找出文件中使用率最高的汉字的方法。分享给大家供大家参考。具体分析如下:

这是我初学Python时写的,为了简便,我并没在排序完后再去掉非中文字符,稍微会影响性能(大约增加了25%的时间)。

# -*- coding: gbk -*- 
import codecs 
from time import time 
from operator import itemgetter 
def top_words(filename, size=10, encoding='gbk'): 
  count = {} 
  for line in codecs.open(filename, 'r', encoding): 
    for word in line: 
      if u'\u4E00' <= word <= u'\u9FA5' or u'\uF900' <= word <= u'\uFA2D': 
        count[word] = 1 + count.get(word, 0) 
  top_words = sorted(count.iteritems(), key=itemgetter(1), reverse=True)[:size] 
  print '\n'.join([u'%s : %s次' % (word, times) for word, times in top_words]) 
begin = time() 
top_words('空之境界.txt') 
print '一共耗时 : %s秒' % (time()-begin)

如果想用上新方法,以及让join的可读性更高的话,这样也是可以的:

# -*- coding: gbk -*- 
import codecs 
from time import time 
from operator import itemgetter 
from heapq import nlargest 
def top_words(filename, size=10, encoding='gbk'): 
  count = {} 
  for line in codecs.open(filename, 'r', encoding): 
    for word in line: 
      if u'\u4E00' <= word <= u'\u9FA5' or u'\uF900' <= word <= u'\uFA2D': 
        count[word] = 1 + count.get(word, 0) 
  top_words = nlargest(size, count.iteritems(), key=itemgetter(1)) 
  for word, times in top_words: 
    print u'%s : %s次' % (word, times) 
begin = time() 
top_words('空之境界.txt') 
print '一共耗时 : %s秒' % (time()-begin)

或者让行数更少(好?宓牧斜碜酆希??/p>

# -*- coding: gbk -*- 
import codecs 
from time import time 
from operator import itemgetter 
def top_words(filename, size=10, encoding='gbk'): 
  count = {} 
  for word in [word for word in codecs.open(filename, 'r', encoding).read() if u'\u4E00' <= word <= u'\u9FA5' or u'\uF900' <= word <= u'\uFA2D']: 
    count[word] = 1 + count.get(word, 0) 
  top_words = sorted(count.iteritems(), key=itemgetter(1), reverse=True)[:size] 
  print '\n'.join([u'%s : %s次' % (word, times) for word, times in top_words]) 
begin = time() 
top_words('空之境界.txt') 
print '一共耗时 : %s秒' % (time()-begin)

此外还可以引入with语句,这样只需一行就能获得异常安全性。
3者性能几乎一样,结果如下:

的 : 17533次
是 : 8581次
不 : 6375次
我 : 6168次
了 : 5586次
一 : 5197次
这 : 4394次
在 : 4264次
有 : 4188次
人 : 4025次
一共耗时 : 0.5秒

引入psyco模块的成绩:

的 : 17533次
是 : 8581次
不 : 6375次
我 : 6168次
了 : 5586次
一 : 5197次
这 : 4394次
在 : 4264次
有 : 4188次
人 : 4025次
一共耗时 : 0.280999898911秒

 

注:测试文件为778KB的GBK编码,40余万字。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python使用cookielib库示例分享
Mar 03 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
Django Admin实现上传图片校验功能
Mar 06 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
Python解惑之整数比较详解
Apr 24 Python
Python使用sorted排序的方法小结
Jul 28 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
Jan 22 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
详解DeBug Python神级工具PySnooper
Jul 03 Python
python里运用私有属性和方法总结
Jul 08 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 Python
Pandas 稀疏数据结构的实现
Jul 25 Python
Python实现Windows上气泡提醒效果的方法
Jun 03 #Python
Python捕捉和模拟鼠标事件的方法
Jun 03 #Python
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 #Python
Python fileinput模块使用实例
Jun 03 #Python
以windows service方式运行Python程序的方法
Jun 03 #Python
自己编程中遇到的Python错误和解决方法汇总整理
Jun 03 #Python
python中list常用操作实例详解
Jun 03 #Python
You might like
我的论坛源代码(六)
2006/10/09 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
写了10年的Javascript也未必全了解的连续赋值运算
2011/03/25 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
python实现分页效果
2017/10/25 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
活动总结怎么写啊
2014/05/07 职场文书
房地产广告策划方案
2014/05/15 职场文书
企业贷款委托书格式
2014/09/12 职场文书
超市创业计划书
2014/09/15 职场文书
街道社区活动报告
2015/02/05 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
python神经网络ResNet50模型
2022/05/06 Python