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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
python中stdout输出不缓存的设置方法
May 29 Python
python实现将内容分行输出
Nov 05 Python
用Python编写简单的微博爬虫
Mar 04 Python
Python编码类型转换方法详解
Jul 01 Python
浅谈终端直接执行py文件,不需要python命令
Jan 23 Python
django之session与分页(实例讲解)
Nov 13 Python
python3 读写文件换行符的方法
Apr 09 Python
基于pytorch 预训练的词向量用法详解
Jan 06 Python
tensorflow实现训练变量checkpoint的保存与读取
Feb 10 Python
python 下划线的多种应用场景总结
May 12 Python
Python采集壁纸并实现炫轮播
Apr 30 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摘要生成函数(无乱码)
2012/02/04 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
详解Python import方法引入模块的实例
2017/08/02 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
Python requests模块session代码实例
2020/04/14 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
写好自荐信要注意的问题
2013/11/10 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
购房委托书范本
2014/09/18 职场文书
如何才能写好调研报告?
2019/07/03 职场文书