目录
背景
《天龙八部》是著名作家金庸的代表作之一,历时4年创作完成。该作品气势磅礴,人物众多,非常经典。这里给出一个《天龙八部》的网络版本,文件名为”天龙八部-网络版.txt”。
问题一及解答
问题
请编写程序,对这个《天龙八部》文本中出现的汉字和标点符号进行统计,字符与出现次数之间用冒号:分隔,输出保存到“天龙八部-汉字统计.txt”文件中,该文件要求采用 CSV 格式存储,参考格式如下(注意,不统计空格和回车字符):
天:100, 龙:110, 八:109, 部:10
(略)
解答
程序框图
Created with Raphaël 2.2.0开始以只读模式打开文本天龙八部-网络版.txt,并保存为行文本lines遍历行本文lines,是否达到文本lines末尾?结束遍历列表line元素elm,是否到达列表line末尾?移动到行文本的下一行line字符elm是否不在集合{' ', 'n','ufeff','u3000'}中?利用字典stat的get方法对字符elm进行计数;或者直接根据字典数据stat[elm]进行词频统计移动到列表line中的下一个元素elmyesnoyesnoyesno
数据流图
文本txt读取文本txt列表类型lines遍历列表lines字符串line字符串line遍历字符串lines统计字符
elm个数字典类型stat将字典转化
成列表ls列表ls列表ls将列表ls写入
文本txt文本txt
程序代码
with open("天龙八部-网络版.txt", "r", encoding = "UTF-8") as fi:
lines = fi.readlines()
stat = {}
for line in lines:
for elm in line:
if elm not in {' ', 'n', 'ufeff','u3000'}:
###############方法一:利用字典的get方法进行词频统计###########
## stat[elm] = stat.get(elm,0) + 1
###############方法二:根据字典数据进行词频统计##############
if elm in stat:
stat[elm] += 1
else:
stat[elm] = 1
ls = []
for elm in stat:
ls.append("{}:{}".format(elm,stat[elm]))
with open("天龙八部-汉字统计.txt", "w", encoding ="UTF-8") as fo:
fo.write(",".join(ls))
问题二及解答
问题
请编写程序,对《天龙八部》文本中出现的中文词语进行统计,采用 jieba 库分词,词语与出现次数之间用冒号:分隔,输出保存到“天龙八部-词语统计.txt”文件中。参考格式如下(注意,不统计任何标点符号):
天龙:100, 八部:10
(略)
本题暂不支持自动评阅,print(‘ok’),即可得分
解答
程序框图
Created with Raphaël 2.2.0开始以只读模式打开文本天龙八部-网络版.txt,并保存为行文本lines导入第三方库jieba遍历行本文lines,是否达到文本末尾?结束利用第三方库jieba进行中文分词并返回分词后的列表ls遍历列表ls元素——字符elm,是否到达列表末尾?移动到行文本lines的下一行字符elm是否不在集合{' ', 'n','ufeff','u3000'}中?利用字典stat的get方法对字符elm进行计数;或者直接根据字典stat数据进行词频统计移动到列表ls中的下一个元素yesnoyesnoyesno版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yimsdn/article/details/100902472
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
发表于 2020-03-01 18:32
阅读 ( 286 )