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基础教程项目三之万能的XML
Apr 02 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
Python向excel中写入数据的方法
May 05 Python
Django REST framework 分页的实现代码
Jun 19 Python
如何使用Python实现斐波那契数列
Jul 02 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
python 实现线程之间的通信示例
Feb 14 Python
Python 在局部变量域中执行代码
Aug 07 Python
python录音并调用百度语音识别接口的示例
Dec 01 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
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
javascript比较文档位置
2008/04/08 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
Vue组件化开发思考
2018/02/02 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python线程池的实现实例
2013/11/18 Python
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
python遍历数组的方法小结
2015/04/30 Python
Python中subprocess模块用法实例详解
2015/05/20 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
机电专业个人求职信范文
2013/12/30 职场文书
土木建筑学生自我评价
2014/01/14 职场文书
制药工程专业个人求职自荐信
2014/01/25 职场文书
班主任新年寄语
2014/04/04 职场文书
试用期自我评价范文
2015/03/10 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
团拜会主持词
2015/07/04 职场文书
Python Pandas解析读写 CSV 文件
2022/04/11 Python