本关任务:统计英文文本“step4/Hamlet.txt”中所有单词出现的次数,输出 Hamlet 中前n个高频词语及其次数。如图: 输入:整数n(n<50),表示要输出前n个高频词语及其次数。 输出:n行,表示前n个高频词语及其次数,词语及其次数之间使用制表符\t分隔。 注意:“单词”不区分英文大小写,例如“the”和“The”被认为是同一个单词,各种特殊字符!"#$%&()*+,-./:;<=>?@[\]^_‘{|}~不在统计范围内。 python代码
时间: 2024-03-14 20:48:10 浏览: 144
可以使用Python中的字典来记录每个单词出现的次数,然后按照单词出现次数进行排序,输出前n个高频词语即可。
以下是代码实现:
```python
import re
# 读取文件
with open('step4/Hamlet.txt', 'r') as f:
text = f.read()
# 将所有单词变成小写,并去除特殊字符
text = re.sub(r'[^\w\s]', '', text.lower())
# 统计每个单词出现的次数
word_dict = {}
for word in text.split():
if word in word_dict:
word_dict[word] += 1
else:
word_dict[word] = 1
# 按照单词出现次数进行排序
sorted_words = sorted(word_dict.items(), key=lambda x: x[1], reverse=True)
# 输出前n个高频词语及其次数
n = int(input())
for i in range(n):
print(sorted_words[i][0] + '\t' + str(sorted_words[i][1]))
```
注意,由于输入只有一个整数n,因此可以直接使用`input()`函数来读取用户输入。在输出时,需要将单词和次数之间使用制表符`\t`分隔。
相关问题
python哈姆雷特及其出现次数_实验要求: 1 、实现对 hamlet.txt 文件的读取; 2 、实现对 hamlet.txt 文件的单词抽取; 3 、实现对 hamlet.txt 文件中出现频次...
好的,我了解了你的问题。这是一个Python实验的要求,需要实现对哈姆雷特文本文件的读取,单词抽取和出现频次统计。我可以为你提供一些参考代码和思路。
首先,你需要读取文件并将其存储为字符串。可以使用Python内置的`open()`函数打开文件,然后使用`read()`方法读取文件内容。示例代码如下:
```python
with open('hamlet.txt', 'r') as f:
text = f.read()
```
接下来,你需要对文本进行单词抽取。可以使用Python内置的`split()`方法将文本分割为单词列表。示例代码如下:
```python
words = text.split()
```
最后,你需要统计每个单词在文本中出现的频次。可以使用Python内置的`collections`模块中的`Counter`类。示例代码如下:
```python
from collections import Counter
word_counts = Counter(words)
```
现在,你可以使用`word_counts`字典来获取每个单词的出现次数。例如,要获取单词“Hamlet”的出现次数,可以使用`word_counts['Hamlet']`。
希望这些代码和思路能够帮助你完成Python实验。如果你有任何问题,请随时问我。
《哈姆雷特》是啥事毕业的一部经典悲剧作品,该作品对应的hamlet.txt,编写程序统计hamlet.txt中出现频率最高的前10个单词,并将结果用文件名"hamlet_词频统计.txt"保存,最后用词云图展示。编写程序的参考步骤如下: (1)读取hamlet.txt (2)对文本进行预处理,将文本中的字母全变为小写,然后去除标点符号等特殊符号,例如 " , ? - :\"等等 (3)将文本分词,统计单词出现的频率 (4)排除掉大多数冠词、代词、连接词等词语,例如 the and to of a be等 (5)按照单词出现的频率的降序排列,输出前10个单词机器出现的频率,将结果写入文件hamlet_词频统计.txt中 (6)用词云图展示词频。
好的,我已经明白你的问题了。下面是Python代码实现上述步骤,需要安装jieba和wordcloud库:
```python
import jieba
import re
from collections import Counter
from wordcloud import WordCloud
# 读取文件hamlet.txt
with open('hamlet.txt', 'r', encoding='UTF-8') as f:
text = f.read()
# 将文本中的字母全变为小写,然后去除标点符号等特殊符号
text = text.lower()
text = re.sub(r'[^\w\s]', '', text)
# 分词并统计单词出现频率
words = jieba.lcut(text)
exclude_words = ['the', 'and', 'to', 'of', 'a', 'be'] # 排除掉一些常见词
words = [word for word in words if word not in exclude_words]
word_counts = Counter(words)
# 按照单词出现的频率的降序排列,输出前10个单词及出现频率
word_freqs = word_counts.most_common(10)
with open('hamlet_词频统计.txt', 'w', encoding='UTF-8') as f:
f.write('单词\t\t频率\n')
for word, freq in word_freqs:
f.write(f'{word}\t\t{freq}\n')
# 用词云图展示词频
wordcloud = WordCloud(font_path='simhei.ttf', width=800, height=600, background_color='white')
wordcloud.generate_from_frequencies(word_counts)
wordcloud.to_file('hamlet_词云图.png')
```
运行上述代码,会生成一个名为"hamlet_词频统计.txt"的文件,里面记录了出现频率最高的前10个单词及其出现次数;同时还会生成一个名为"hamlet_词云图.png"的文件,展示了单词出现频率的词云图。
阅读全文