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实现异步回调机制代码分享
Jan 10 Python
使用grappelli为django admin后台添加模板
Nov 18 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
Python日志模块logging基本用法分析
Aug 23 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
Flask框架web开发之零基础入门
Dec 10 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
Python的互斥锁与信号量详解
Sep 12 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
PyCharm 安装与使用配置教程(windows,mac通用)
May 12 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 UTF8 文件的签名问题
2009/10/30 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
javascript读取RSS数据
2007/01/20 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
JavaScript常见的五种数组去重的方式
2016/12/15 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
py中的目录与文件判别代码
2008/07/16 Python
Python实现大文件排序的方法
2015/07/10 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
Python字典遍历操作实例小结
2019/03/05 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
竞选演讲稿范文
2013/12/28 职场文书
结婚典礼证婚词
2014/01/08 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
运动会演讲稿100字
2014/08/25 职场文书
公司停电通知
2015/04/15 职场文书
会议主持词通用版
2019/04/02 职场文书