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 list语法学习(带例子)
Nov 01 Python
python解析xml文件操作实例
Oct 05 Python
Python创建系统目录的方法
Mar 11 Python
python实现发送和获取手机短信验证码
Jan 15 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
详解django三种文件下载方式
Apr 06 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
python Tkinter模块使用方法详解
Apr 07 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
我的论坛源代码(九)
2006/10/09 PHP
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
python常用函数详解
2016/09/13 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
PHP统计代码行数的小代码
2019/09/19 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
复古服装:RetroStage
2019/05/10 全球购物
计算机学生的自我评价分享
2014/02/18 职场文书
大学新生军训方案
2014/05/03 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
借条如何写
2015/05/26 职场文书
婚庆主持词大全
2015/06/30 职场文书
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript