统计史记的字数

编程入门 行业动态 更新时间:2024-10-11 23:24:01

统计<a href=https://www.elefans.com/category/jswz/34/1740489.html style=史记的字数"/>

统计史记的字数

好久没有读书了,突然想读一读历史来提高一下自己的逼格。然后就到网上下载了《史记》原文全文。

因为不知道是不是全集的,所以突发奇想,想统计一下总的文字数量,看看是不是基本齐全。OK ,说干就干,能使用的语言很多,C# ,PHP ,JAVA ,C++ ,PYTHON, VB , 都可以。用哪一种呢?python 刚接触,挺新鲜,就你了。没想到,一下子就掉坑里了(如果上天再给我一次选择的机会,我一定选择Java,没想到python 2.7 处理中文真费劲)。 决定用python 了,先选个版本吧,电脑上装了3.5 和 2.7 ,用哪一个呢? 实话说,3.5 就用了一次,爬虫需要。平时用的多的还是2.7 ,经常拿来做一些小的科学计算。那就用 2.7 吧(就这么一步步掉坑里了)。 OK ,开始写代码,第一步就跪了。。。: 沃日,这是什么情况,想看看文件列表都不行。赶紧问度娘,明白了,原来是路径不能出现中文,出现中文的话需要unicode 一下。 我忍了,毕竟写web  的时候,处理下载中文名文件时候也遇到过。于是改吧: OK ,没问题了,没有报错,我们就是加了一句 unicode(originpath,"utf-8"). 能罗列出来文件,接下来我们就是挨个的遍历每一个文件了: 看上去没问题,能够全部读出来了。然后我们需要判断是符号还是汉字啊,问度娘,知道了unicode 的话,判断是否为汉字可以通过下面方式:
  1. #判断是否为汉字
  2. def is_chinese(uchar):
  3. if uchar >= u'\u4E00'and uchar <= u'\u9FA5':
  4. returnTrue
  5. else:
  6. returnFalse
如上,判断是否为汉字的函数。我们加到程序里面,同时为了统计字数,还需要一个全局变量,python 里面的全局变量有些奇怪,不能初始化。所以,代码进一步完善如下: 如上,测试了一下,发现竟然乱码了,想想错在哪里呢?f  是直接从文件读取出来的字符串,还是中文的,肯定需要Unicode才能处理啊,赶紧改代码: 我的个神,这次没有报错,但是竟然没有把汉字打印出来,我打印了一个字符才break的啊,怎么回事儿?我改成打印五个字符试试: 能打印出来,好奇怪,这说明第一个字符不是中文?赶紧看看文件: 是汉字啊?那是什么原因?难道是可恶的BOM 头 ?     原来如此啊,果然是BOM 头搞的鬼。 赶紧加代码去除BOM 头:
  1. #去除BOM 头信息
  2. def cut_bom(f):
  3. if f[:3]== codecs.BOM_UTF8:
  4. f = f[3:]
  5. return f
如上所示,有东西了,我们已经去掉BOM 头信息了。搞定这些了,只差最后一步的统计了: 完美,最后统计出来汉字个数一共有 51 万多。 百度了一下史记字数描述如下: 查了一万多字呢。基本上差不多。毕竟史记是经过删改,后人也往里面加了好多东西的。这五十万字就够我看了的。 统计汉字数量并不难,如果用Java 估计十分钟就写出来了,用 python 主要把时间浪费在了乱码处理上,现在基本上就明白了这里面的原理。还是认真读读 在Python中正确使用Unicode, 才有了更加深刻的认识。



来自为知笔记(Wiz)



转载于:.html

更多推荐

统计史记的字数

本文发布于:2023-06-29 08:32:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/942148.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:史记   字数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!