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实现处理管道的方法
Jun 04 Python
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
python微信好友数据分析详解
Nov 19 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
Aug 04 Python
python中bytes和str类型的区别
Oct 21 Python
Python安装OpenCV的示例代码
Mar 05 Python
python matplotlib实现将图例放在图外
Apr 17 Python
解决pip install psycopg2出错问题
Jul 09 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 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中截取字符串支持utf-8
2007/01/18 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
微信小程序实现多选功能
2018/11/04 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
python的exec、eval使用分析
2017/12/11 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
Django 用户认证组件使用详解
2019/07/23 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
应用服务器有那些
2012/01/19 面试题
本科毕业生求职自荐信
2014/02/03 职场文书
教师党性分析材料
2014/02/04 职场文书
公路绿化方案
2014/05/12 职场文书
责任胜于能力演讲稿
2014/05/20 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
小学运动会入场词
2015/07/18 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python