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 Django做网页
Nov 04 Python
python获取beautifulphoto随机某图片代码实例
Dec 18 Python
python查找第k小元素代码分享
Dec 18 Python
python使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
python实现多层感知器MLP(基于双月数据集)
Jan 18 Python
python如何将多个PDF进行合并
Aug 13 Python
python+django+rest框架配置创建方法
Aug 31 Python
python 实现单通道转3通道
Dec 03 Python
python中return的返回和执行实例
Dec 24 Python
Python PIL按比例裁剪图片
May 11 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 substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
JS input 数字验证代码
2009/07/30 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
Javascript地址引用代码实例解析
2020/02/25 Javascript
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
python模拟鼠标拖动操作的方法
2015/03/11 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
Django 开发环境配置过程详解
2019/07/18 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
法国足球商店:Footcenter
2019/07/06 全球购物
机电一体化职业规划书
2014/01/07 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
村抢险救灾方案
2014/05/09 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
学校周年庆活动方案
2014/08/22 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js