概述
项目场景:
Python练习题问题描述:
提示:这里描述项目中遇到的问题:
请统计hamlet.txt文件中出现的英文单词情况,统计并输出出现最多的前n个单词,注意:
(1) 单词不区分大小写,即需将大写转换成小写;
(2) 请在文本中剔除如下特殊符号:!"#$%&()*+,-./:;<=>?@[]^_‘{|}~
(3) 输出10个单词和其出现次数,每个单词一行;
(4) 输出单词为小写形式。
此题不涉及编码转换,若想指定编码 可在开始加上
#-- coding: utf-8 --
或 在文件打开处 指定编码
with open(“hamlet.txt”, “r”, encoding=‘utf-8’) as f:
........
........
原因分析:
提示:这里填写问题的分析:
题目要求从文件中读取一篇文章,然后统计输出文章中最常出现的10个单词以及次数,从思路上来看,词频统计就是一个累加问题,对文章中的每一个词设计一个相应的计数器,每个单词出现一次就进行加一。采用什么数据类型就成为我们思考的地方,如果我们以词语为键,计数器为值,会构成一个<单词>.<次数>的键值对,可以很好的解决该问题。首先我们先获取文章的单词,并且将大写字母改为小写,同时去掉特殊字符,就得了我们想要的数据,然后对每个数据进行计数,假设将单词保存在word中,使用一个字典类型count = {},如果出现一次,将相应的值加1即可,最后排序,格式化输出即可
解决方案:
提示:这里填写该问题的具体解决方案:
def gettest():
txt = open("hamlet.txt", 'r').read()
txt = txt.lower()
for ch in '!"#$%&()*+,-./:;<=>?@[\]^_‘{|}~':
txt = txt.replace(ch, ' ')
return txt
hamelet = gettest()
words = hamelet.split()
count = {}
n = eval(input())
num = 0
for word in words:
count[word] = count.get(word, 0) + 1
items = list(count.items())
items.sort(key=lambda x: x[1], reverse=True)
for i in range(10):
num += 1
word, count = items[i]
if num > n:
break
print("{0:<10}{1:>5}".format(word, count))
最后
以上就是天真大雁为你收集整理的文件词频统计--Hamlet项目场景:问题描述:原因分析:解决方案:的全部内容,希望文章能够帮你解决文件词频统计--Hamlet项目场景:问题描述:原因分析:解决方案:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复