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中的装饰器用法详解
Jan 14 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
用tensorflow搭建CNN的方法
Mar 05 Python
python 2.7.14安装图文教程
Apr 08 Python
python验证码识别教程之利用投影法、连通域法分割图片
Jun 04 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
python3.7 的新特性详解
Jul 25 Python
python可视化实现KNN算法
Oct 16 Python
基于python实现学生信息管理系统
Nov 22 Python
python读取与处理netcdf数据方式
Feb 14 Python
详解Python flask的前后端交互
Mar 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
一起来写段JS drag拖动代码
2010/12/09 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
写求职信有什么意义
2014/02/17 职场文书
股东合作协议书范本
2014/04/14 职场文书
公司联欢会策划方案
2014/05/19 职场文书
食品安全承诺书
2014/05/22 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
婚宴主持词
2015/06/30 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
python标准库ElementTree处理xml
2022/05/20 Python