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之入门(四)运算
May 27 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
python字典的常用操作方法小结
May 16 Python
python中星号变量的几种特殊用法
Sep 07 Python
Python实现自动发送邮件功能
Mar 02 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
Python函数参数分类原理详解
May 28 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
python2和python3哪个使用率高
Jun 23 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
Python机器学习之逻辑回归
May 11 Python
Python docx库删除复制paragraph及行高设置图片插入示例
Jul 23 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 if 想到的些问题
2008/03/22 PHP
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
PHP中的self关键字详解
2019/06/23 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
js获取Get值的方法
2016/09/29 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
将Python中的数据存储到系统本地的简单方法
2015/04/11 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
Ubuntu下安装PyV8
2016/03/13 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
python实现俄罗斯方块
2018/06/26 Python
python通过http下载文件的方法详解
2019/07/26 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
毕业生自我鉴定
2013/12/04 职场文书
宿舍卫生检讨书
2014/01/16 职场文书
办公室主任先进事迹
2014/01/18 职场文书
现场施工员岗位职责
2014/03/10 职场文书
家长给学校的建议书
2014/05/15 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python