首頁  >  文章  >  後端開發  >  Python文字統計功能之西遊記用字統計操作

Python文字統計功能之西遊記用字統計操作

不言
不言原創
2018-05-07 13:53:273499瀏覽

這篇文章主要介紹了Python文本統計功能之西遊記用字統計操作,結合實例形式分析了Python文本讀取、遍歷、統計等相關操作技巧,需要的朋友可以參考下

本文實例講述了Python文本統計功能之西遊記用字統計操作。分享給大家供大家參考,具體如下:

一、資料

#xyj.txt,《西遊記》的文本,2.2MB

致敬吳承恩大師,4020行(段)

#二、目標

統計《西遊記》中:

1. 共出現了多少個不同的漢字;
2. 每個漢字出現了多少次;
3. 出現得最頻繁的漢字有哪些。

三、涉及內容:

1. 讀檔;
2. 字典的使用;
3. 字典的排序;
4. 寫檔案

四、效果

五、原始碼

# coding:utf8
import sys
reload(sys)
sys.setdefaultencoding("utf8")
fr = open('xyj.txt', 'r')
characters = []
stat = {}
for line in fr:
  # 去掉每一行两边的空白
  line = line.strip()
  # 如果为空行则跳过该轮循环
  if len(line) == 0:
    continue
  # 将文本转为unicode,便于处理汉字
  line = unicode(line)
  # 遍历该行的每一个字
  for x in xrange(0, len(line)):
    # 去掉标点符号和空白符
    if line[x] in [' ','', '\t', '\n', '。', ',', '(', ')', '(', ')', ':', '□', '?', '!', '《', '》', '、', ';', '“', '”', '……']:
      continue
    # 尚未记录在characters中
    if not line[x] in characters:
      characters.append(line[x])
    # 尚未记录在stat中
    if not stat.has_key(line[x]):
      stat[line[x]] = 0
    # 汉字出现次数加1
    stat[line[x]] += 1
print len(characters)
print len(stat)
# lambda生成一个临时函数
# d表示字典的每一对键值对,d[0]为key,d[1]为value
# reverse为True表示降序排序
stat = sorted(stat.items(), key=lambda d:d[1], reverse=True)
fw = open('result.csv', 'w')
for item in stat:
  # 进行字符串拼接之前,需要将int转为str
  fw.write(item[0] + ',' + str(item[1]) + '\n')
fr.close()
fw.close()

#######相關推薦:#########Python文字特徵擷取與向量化演算法學習實例詳解############Python文本相似性計算之編輯距離詳解######

以上是Python文字統計功能之西遊記用字統計操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn