环境:
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 in fileIn: 12 for char in line: 13 word_lst.append(char) 14 15 # 用字典统计每个字出现的个数 16 for char in word_lst: 17 if char not in exclude_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 ('字符 字频') 29 print ('=============') 30 for e in lstWords[:100]: 31 print ('%s %d' % e) 32 fileOut.write('%s, %d ' % 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 >>>
主人公的名字排名靠前,嗯,合情合理。