Python找出文件中使用率最高的汉字实例详解
本文实例讲述了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)
或者让行数更少(好囧的列表综合):
# -*- 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程序设计有所帮助。
相关文章
PyTorch中的参数类torch.nn.Parameter()详解
这篇文章主要给大家介绍了关于PyTorch中torch.nn.Parameter()的相关资料,要内容包括基础应用、实用技巧、原理机制等方面,文章通过实例介绍的非常详细,需要的朋友可以参考下2022-02-02
安装Python的web.py框架并从hello world开始编程
这篇文章主要介绍了安装Python的web.py框架并从hello world开始编程,web.py的作者年轻的Aaron Swartz已经离世,缅怀大神,需要的朋友可以参考下2015-04-04
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
这篇文章主要介绍了使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-05-05
Ubuntu中安装指定Python版本方法详解(理论上各版本通用)
现在基于linux的发行版本有很多,有centos,ubuntu等,一般基于linux的衍生系统至少都安装了Python2版本,但是现在Python已经是3.x版本大行其道了,这篇文章主要给大家介绍了关于Ubuntu中安装指定Python版本方法的相关资料,理论上各版本通用,需要的朋友可以参考下2023-06-06


最新评论