Python文本统计功能之西游记用字统计操作示例


Posted in Python onMay 07, 2018

本文实例讲述了Python文本统计功能之西游记用字统计操作。分享给大家供大家参考,具体如下:

一、数据

xyj.txt,《西游记》的文本,2.2MB

致敬吴承恩大师,4020行(段)

二、目标

统计《西游记》中:

1. 共出现了多少个不同的汉字;
2. 每个汉字出现了多少次;
3. 出现得最频繁的汉字有哪些。

三、涉及内容:

1. 读文件;
2. 字典的使用;
3. 字典的排序;
4. 写文件

四、效果

Python文本统计功能之西游记用字统计操作示例

五、源代码

# 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 相关文章推荐
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
python使用turtle库绘制时钟
Mar 25 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
python ddt数据驱动最简实例代码
Feb 22 Python
python多线程高级锁condition简单用法示例
Nov 07 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
python Protobuf定义消息类型知识点讲解
Mar 02 Python
Matplotlib绘制混淆矩阵的实现
May 27 Python
Python中的函数作用域
May 07 #Python
Php多进程实现代码
May 07 #Python
Python格式化输出%s和%d
May 07 #Python
python获取代理IP的实例分享
May 07 #Python
对python使用http、https代理的实例讲解
May 07 #Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 #Python
python使用代理ip访问网站的实例
May 07 #Python
You might like
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
PHP使用递归生成文章树
2015/04/21 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
js loading加载效果实现代码
2009/11/24 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
2013/09/25 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
python中元组的用法整理
2020/06/15 Python
四年级数学教学反思
2014/02/02 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
委托公证书
2014/04/08 职场文书
师范生求职信
2014/06/14 职场文书
教师工作失职检讨书
2014/09/18 职场文书
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python