当我们在看一篇文章甚至是一本小说的时候,想知道文本中哪个字出现的最多,出现了多少次,该怎么办?Python可以用简单的代码就可以实现这份工作。你也可以拓展一下,可以通过小说中谁的名字或者哪一句话出现的次数最多来推断主角是谁?口头禅是什么?是不是十分有趣,快来试试吧。
思路:
是先把每个字符提出来放在列表里;
再过滤掉其中的标点符号;
最后用字典对某个字出现的频率进行累加。
相关推荐:《python视频教程》
下面以芳华这本小说为例:#coding:utf-8
word_lst = []
word_dict = {}
exclude_str = ",。!?、()【】<>《》=:+-*—“”…"
with open("芳华.txt","r") as fileIn ,open("芳华字频.txt",'w') as fileOut:
# 添加每一个字到列表中
for line in fileIn:
for char in line:
word_lst.append(char)
# 用字典统计每个字出现的个数
for char in word_lst:
if char not in exclude_str:
if char.strip() not in word_dict: # strip去除各种空白
word_dict[char] = 1
else :
word_dict[char] += 1
# 排序
# x[1]是按字频排序,x[0]则是按字排序
lstWords = sorted(word_dict.items(), key=lambda x:x[1], reverse=True)
#输出结果 (前100)
print ('字符\t字频')
print ('=============')
for e in lstWords[:100]:
print ('%s\t%d' % e)
fileOut.write('%s, %d\n' % e)
输出结果字符 字频
=============
的 3641
一 1834
了 1748
是 1506
不 1267
我 1229
她 1156
他 985
小 962
个 921
人 866
在 853
刘 745
丁 728
那 723
上 705
来 698
峰 691
们 684
就 667
说 577
有 572
到 564
这 562
里 537
儿 520
嫚 499
子 494
都 492
着 491
大 482
么 462
出 460
看 441
也 415
得 404
下 383
时 367
还 366
女 349
地 340
头 331
好 327
没 326
去 321
过 320
老 317
跟 311
你 309
把 307
对 303
年 301
会 300
生 291
为 289
发 289
要 281
何 280
亲 273
后 272
给 267
和 266
天 265
家 259
手 251
长 251
想 249
多 242
自 241
开 240
当 236
兵 235
样 232
郝 230
可 228
起 225
被 224
成 216
十 215
什 215
以 209
事 209
从 209
点 208
能 203
两 203
回 202
门 201
所 195
淑 188
雯 188
只 188
心 184
身 184
让 179
道 179
母 174
做 173
话 173
最 172
>>>