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 04 Python
Python操作列表之List.insert()方法的使用
May 20 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
Jun 06 Python
Python装饰器语法糖
Jan 02 Python
Apache,wsgi,django 程序部署配置方法详解
Jul 01 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
python 遍历磁盘目录的三种方法
Apr 02 Python
用Python监控你的朋友都在浏览哪些网站?
May 27 Python
如何使用python包中的sched事件调度器
Apr 30 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数组去重的函数代码
2013/02/03 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
Prototype Array对象 学习
2009/07/19 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
Angular实现的简单定时器功能示例
2017/12/28 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
小程序实现密码输入框
2020/11/16 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
浅谈python写入大量文件的问题
2018/11/09 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
python多进程并发demo实例解析
2019/12/13 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
Python 使用office365邮箱的示例
2020/10/29 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
python字典与json转换的方法总结
2020/12/28 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
2014年企业党支部工作总结
2014/12/04 职场文书
高中教师个人工作总结
2015/02/10 职场文书
2015年行政工作总结范文
2015/04/09 职场文书