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展示动态规则法用以解决重叠子问题的示例
Apr 02 Python
详解Python函数作用域的LEGB顺序
May 14 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 Python
python 对txt中每行内容进行批量替换的方法
Jul 11 Python
Python切片操作深入详解
Jul 27 Python
详解python中递归函数
Apr 16 Python
Python 用三行代码提取PDF表格数据
Oct 13 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
Django 解决上传文件时,request.FILES为空的问题
May 20 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
Python使用openpyxl复制整张sheet
Mar 24 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
oracle资料库函式库
2006/10/09 PHP
php下统计用户在线时间的一种尝试
2010/08/26 PHP
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
JavaScript prototype属性使用说明
2010/05/13 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
python中xlrd模块的使用详解
2021/02/01 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
上班看电影检讨书
2014/02/12 职场文书
元旦活动感言
2014/03/08 职场文书
体育活动总结范文
2014/05/04 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
爱牙日活动总结
2014/08/29 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
春节慰问信范文
2015/02/15 职场文书
社区服务理念口号
2015/12/25 职场文书