• 用Python实现小说中的汉字频率统计


     环境:

    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 >>> 

    主人公的名字排名靠前,嗯,合情合理。

    本文由hATEmATH原创 转载请注明出处:http://www.cnblogs.com/hatemath/
  • 相关阅读:
    [leetcode]Valid Number
    [leetcode]Edit Distance
    [leetcode]Decode Ways
    [leetcode]Maximum Depth of Binary Tree
    [topcoder]BadNeighbors
    [topcoder]ZigZag
    [leetcode]Subsets II
    [leetcode]Merge Sorted Array
    [leetcode]Binary Tree Maximum Path Sum
    hdu 2964 Prime Bases(简单数学题)
  • 原文地址:https://www.cnblogs.com/hatemath/p/8268234.html
Copyright © 2020-2023  润新知