国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python找出文件中使用率最高的漢字實例詳解

Python找出文件中使用率最高的漢字實例詳解

2020-07-12 11:10xm1331305 Python

這篇文章主要介紹了Python找出文件中使用率最高的漢字,涉及Python針對字符串與中文的相關操作技巧,需要的朋友可以參考下

本文實例講述了Python找出文件中使用率最高的漢字的方法。分享給大家供大家參考。具體分析如下:

這是我初學Python時寫的,為了簡便,我并沒在排序完后再去掉非中文字符,稍微會影響性能(大約增加了25%的時間)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- 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的可讀性更高的話,這樣也是可以的:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# -*- 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)

或者讓行數更少(好囧的列表綜合):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- 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者性能幾乎一樣,結果如下:

?
1
2
3
4
5
6
7
8
9
10
11
的 : 17533
是 : 8581
不 : 6375
我 : 6168
了 : 5586
一 : 5197
這 : 4394
在 : 4264
有 : 4188
人 : 4025
一共耗時 : 0.5

引入psyco模塊的成績:

?
1
2
3
4
5
6
7
8
9
10
11
的 : 17533
是 : 8581
不 : 6375
我 : 6168
了 : 5586
一 : 5197
這 : 4394
在 : 4264
有 : 4188
人 : 4025
一共耗時 : 0.280999898911

 

注:測試文件為778KB的GBK編碼,40余萬字。

希望本文所述對大家的Python程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲视频免费在线观看 | 欧美日韩中文在线观看 | 久久一级淫片 | 午夜精品久久久久久 | 亚洲欧美在线观看 | 精品国产一区探花在线观看 | 大胆一区| 亚洲精品乱码久久久久久花季 | 日韩综合网| 久久久成人网 | 久久精品无码一区二区日韩av | 欧美一级黄色片免费看 | 一区二区三区欧美 | 毛片免费观看视频 | 欧美一区二区三区电影 | 国产三区av | 国产欧美高清在线观看 | 91午夜理伦私人影院 | 99视频在线| 亚洲国产高清视频 | 亚洲精品在线视频观看 | 91精品国产日韩91久久久久久 | 国产在线在线 | 久久精品电影网 | 91在线高清观看 | 久久草在线视频 | 亚洲性生活免费视频 | 久久久久久久成人 | 日韩中文在线 | 精品在线一区二区 | 欧美一区二区三区xxxx监狱 | 日本精品一区 | 黄色网日本| 亚洲91av| 亚色网站| 色综合天天综合网国产成人网 | 成人在线激情网 | 美日韩一区 | 在线中文字幕视频 | 成人九九视频 | 一区二区在线看 |