我是靠谱客的博主 天真大雁,最近开发中收集的这篇文章主要介绍文件词频统计--Hamlet项目场景:问题描述:原因分析:解决方案:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目场景:

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项目场景:问题描述:原因分析:解决方案:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部