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 相关文章推荐
深入理解 Python 中的多线程 新手必看
Nov 20 Python
详解 Python 与文件对象共事的实例
Sep 11 Python
使用Python & Flask 实现RESTful Web API的实例
Sep 19 Python
Python3 处理JSON的实例详解
Oct 29 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
对django layer弹窗组件的使用详解
Aug 31 Python
Pandas的Apply函数具体使用
Jul 21 Python
一篇文章教你用python画动态爱心表白
Nov 22 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实现商品成交时发送短信功能
2016/05/11 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
Laravel下生成验证码的类
2017/11/15 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
一个javascript图片阅览组件
2010/11/09 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
简单介绍Ruby中的CGI编程
2015/04/10 Python
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
Python实现中值滤波去噪方式
2019/12/18 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
Final类有什么特点
2012/04/25 面试题
少先队入队活动方案
2014/02/08 职场文书
美术教师自我鉴定
2014/02/12 职场文书
国贸专业的职业规划书
2014/03/15 职场文书
融资租赁计划书
2014/04/29 职场文书
物理学专业自荐信
2014/06/11 职场文书
单位介绍信格式
2015/01/31 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
详解thinkphp的Auth类认证
2021/05/28 PHP