请统计hamlet.txt文件中出现的英文单词情况,统计并输出出现最多的前n个单词,注意:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪

请统计hamlet.txt文件中出现的英文单词情况,统计并输出出现最多的前n个单词,注意:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

(1) 单词不区分大小写,即需将大写转换成小写;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

(2) 请在文本中剔除如下特殊符号:!"#$%&()*+,-./:;<=>?@[\]^_‘{|}~‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

(3) 输出n个单词和其出现次数,每个单词一行;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

(4) 输出单词为小写形式。

此题不涉及编码转换,若想指定编码 可在开始加上

#-- coding: utf-8 --

或 在文件打开处 指定编码

with open(“hamlet.txt”, “r”, encoding=‘utf-8’) as f:

 ........

 ........

【输入形式】

【输出形式】

以下仅是输出样例(仅列出3个,需要列出n个),不是最终结果:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

the 1138

and 965

to 754

单词 左对齐,并占10个位置; 次数 右对齐,并占5个位置

【样例输入】
【样例输出】
【样例说明】
【评分标准】

def getText():
    txt = open("hamlet.txt","r").read()#打开文本
    txt = txt.lower()
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
        txt = txt.replace(ch," ")
    #归一 去噪
    return txt
n=eval(input())
hamletTxt = getText()
counts = {}
words= hamletTxt.split()
for word in words:
    counts[word] = counts.get(word,0)+1
items = list(counts.items())#返回元组类型元素的列表
items.sort(key=lambda x:x[1],reverse = True)#倒序 对键值进行排序
for i in range(n):
    word,count = items[i]
    print("{:<10}{:>5}".format(word,count))
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我会用文回复。要统计hamlet.txt文件出现英文单词情况,可以先读取文件,然后使用正则表达式或者其他方法提取出所有的英文单词。接着,可以使用Python的字典来统计每个单词出现的次数,并按照出现次数从大到小排序。最后,输出出现最多n个单词即可。需要注意的是,统计单词时要考虑大小写,可以将所有单词转换为小写再进行统计。 ### 回答2: 要回答这个问题,我们需要借助编程语言来统计hamlet.txt文件出现英文单词情况。以下是一个Python代码示例: ``` import re from collections import Counter # 读取文件内容 with open('hamlet.txt', 'r') as f: text = f.read() # 去除标点符号和换行符 text = re.sub(r'[^\w\s]', '', text) text = re.sub(r'\n', ' ', text) # 将所有单词转为小写并按照空格分割 words = text.lower().split() # 统计单词出现次数 word_counts = Counter(words) # 输出出现最多n个单词 n = 10 top_n_words = word_counts.most_common(n) for word, count in top_n_words: print(word, count) ``` 上述代码首先读取hamlet.txt文件的内容,并使用正则表达式去除标点符号和换行符,接着将所有单词转换为小写并按照空格分割,最后使用collections模块的Counter类来统计每个单词出现的次数,并输出出现最多n个单词。 需要注意的是,由于hamlet.txt文件可能存在一些非英文单词,比如人名、地名等,因此统计出的单词数可能会略微偏高。此外,许多单词可能有不同的形式,如复数形式、时态形式等,但在本文我们将它们视为不同的单词统计。 ### 回答3: 要解决这个问题,我们需要进行以下步骤: 1. 读取hamlet.txt文件的内容,并将其转换为小写字母。这是因为我们不希望区分大小写。 2. 使用正则表达式将文本的标点符号和数字删除。这将使我们只剩下英文单词。 3. 将文本分割成单词,并计算每个单词出现的次数。 4. 对出现次数进行排序,并输出n个单词。 下面是使用Python实现上述步骤的代码: ``` import re # 步骤1:读取文件并转换为小写字母 with open('hamlet.txt', 'r') as f: text = f.read().lower() # 步骤2:删除标点和数字 text = re.sub('[^a-zA-Z]', ' ', text) # 步骤3:分割单词,并计算出现次数 words = text.split() word_freq = {} for word in words: if word not in word_freq: word_freq[word] = 0 word_freq[word] += 1 # 步骤4:对出现次数进行排序 sorted_words = sorted(word_freq.items(), key=lambda x: x[1], reverse=True) # 输出n个单词 n = 10 for i in range(n): print(sorted_words[i][0], sorted_words[i][1]) ``` 这段代码将输出出现最多10个单词及其出现次数。根据需要,可以更改n的值来输出更多或更少的单词
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值