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入门篇之列表和元组
Oct 17 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
Python 绘图和可视化详细介绍
Feb 11 Python
Python实现求一个集合所有子集的示例
May 04 Python
Django如何配置mysql数据库
May 04 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
详解flask入门模板引擎
Jul 18 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
python实现跨年表白神器--你值得拥有
Jan 04 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
随时给自己贴的图片加文字的php代码
2007/03/08 PHP
PHP session有效期问题
2009/04/26 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
Python3.6正式版新特性预览
2016/12/15 Python
Python实现的双色球生成功能示例
2017/12/18 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
医学专业毕业生个人的求职信
2013/12/04 职场文书
工程项目经理岗位职责
2013/12/15 职场文书
竞争上岗演讲稿
2014/01/05 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
二年级小学生评语
2014/04/21 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
《颐和园》教学反思
2016/02/19 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL