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中字典创建、遍历、添加等实用操作技巧合集
Jun 02 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
Python3生成手写体数字方法
Jan 30 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
解决安装pycharm后不能执行python脚本的问题
Jan 19 Python
python实现扫描局域网指定网段ip的方法
Apr 16 Python
django admin组件使用方法详解
Jul 19 Python
pycharm中显示CSS提示的知识点总结
Jul 29 Python
Python测试模块doctest使用解析
Aug 10 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
详细介绍python类及类的用法
May 31 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
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
基于php下载文件的详解
2013/06/02 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
python线程池threadpool使用篇
2018/04/27 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
python 字符串追加实例
2019/07/20 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
如何开启linux的ssh服务
2013/06/03 面试题
软件测试有哪些?什么是配置项?
2012/02/12 面试题
大三在校生电子商务求职信
2013/10/29 职场文书
办公室主任职责范文
2013/11/08 职场文书
原材料检验岗位职责
2014/03/15 职场文书
合作协议书范本
2014/04/17 职场文书
怎样写离婚协议书
2015/01/26 职场文书
商标侵权律师函
2015/05/27 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript