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判断字符串是否包含子字符串的方法
Mar 24 Python
Python运用于数据分析的简单教程
Mar 27 Python
理解python中生成器用法
Dec 20 Python
python决策树之C4.5算法详解
Dec 20 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
Jan 15 Python
解决Python对齐文本字符串问题
Aug 28 Python
python之列表推导式的用法
Nov 29 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
使用python把xmind转换成excel测试用例的实现代码
Oct 12 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
Feb 03 Python
python批量提取图片信息并保存的实现
Feb 05 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 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
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
JS 继承实例分析
2008/11/04 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
分享一个常用的Python模拟登陆类
2015/03/29 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python中super关键字用法实例分析
2015/05/28 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
python在地图上画比例的实例详解
2020/11/13 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
优秀德育工作者事迹材料
2014/05/07 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
党员群众路线承诺书
2014/05/20 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
2014年财政所工作总结
2014/11/22 职场文书
Python中else的三种使用场景
2021/06/16 Python
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技