环境:
Python 3的代码,亲测可用。
思路:
是先把每个字符提出来放在列表里;再过滤掉其中的标点符号;最后用字典对某个字出现的频率进行累加。
扩展:
用处很多,稍微改改,既可以用来统计小说或文章,也可以用来决定让孩子学哪些常用字,还可以用来分析微博或朋友圈中好友的语言特点,需要的就拿去浪吧,记得送我一个滑稽的回复。
1 #coding:utf-8
2
3 word_lst =[]4 word_dict ={}5
6 exclude_str = ",。!?、()【】<>《》=:+-*—“”…"
7
8 with open("芳华.txt","r") as fileIn ,open("芳华字频.txt",'w') as fileOut:9
10 #添加每一个字到列表中
11 for line infileIn:12 for char inline:13 word_lst.append(char)14
15 #用字典统计每个字出现的个数
16 for char inword_lst:17 if char not inexclude_str:18 if char.strip() not in word_dict: #strip去除各种空白
19 word_dict[char] = 1
20 else:21 word_dict[char] += 1
22
23 #排序
24 #x[1]是按字频排序,x[0]则是按字排序
25 lstWords = sorted(word_dict.items(), key=lambda x:x[1], reverse=True)26
27 #输出结果 (前100)
28 print ('字符\t字频')29 print ('=============')30 for e in lstWords[:100]:31 print ('%s\t%d' %e)32 fileOut.write('%s, %d\n' % e)
输出结果:
1 字符 字频2 =============
3 的 3641
4 一 1834
5 了 1748
6 是 1506
7 不 1267
8 我 1229
9 她 1156
10 他 985
11 小 962
12 个 921
13 人 866
14 在 853
15 刘 745
16 丁 728
17 那 723
18 上 705
19 来 698
20 峰 691
21 们 684
22 就 667
23 说 577
24 有 572
25 到 564
26 这 562
27 里 537
28 儿 520
29 嫚 499
30 子 494
31 都 492
32 着 491
33 大 482
34 么 462
35 出 460
36 看 441
37 也 415
38 得 404
39 下 383
40 时 367
41 还 366
42 女 349
43 地 340
44 头 331
45 好 327
46 没 326
47 去 321
48 过 320
49 老 317
50 跟 311
51 你 309
52 把 307
53 对 303
54 年 301
55 会 300
56 生 291
57 为 289
58 发 289
59 要 281
60 何 280
61 亲 273
62 后 272
63 给 267
64 和 266
65 天 265
66 家 259
67 手 251
68 长 251
69 想 249
70 多 242
71 自 241
72 开 240
73 当 236
74 兵 235
75 样 232
76 郝 230
77 可 228
78 起 225
79 被 224
80 成 216
81 十 215
82 什 215
83 以 209
84 事 209
85 从 209
86 点 208
87 能 203
88 两 203
89 回 202
90 门 201
91 所 195
92 淑 188
93 雯 188
94 只 188
95 心 184
96 身 184
97 让 179
98 道 179
99 母 174
100 做 173
101 话 173
102 最 172
103 >>>
主人公的名字排名靠前,嗯,合情合理。