统计cup英文简介中出现频率最高的10个词 【问题描述】有一个名为cup.txt的文本文档,统计其中出现频率最高的10个词 要求: 将所有标点转为空格 标点字符串 x='\'’‘“”!"#$%&()*+,-./:;<=>?@[\\]^_{|}~' 考虑:英文单引号用转义字符\'、双引号"、中文的单引号2个、中文双引号2个 所有单词转为小写字母 不包括以下单词:s="the,and,of,in,with,a,has,to,it,for,at,is,on,from" 建议设计适当的自定义函数实现 【输入形式】无 【输出形式】共10行,每行1个单词及其次数,之间用空格分隔 【样例输入】无 【样例输出】(仅作示意,不是答案) cup 22 petroleum 13 engineering 10 enterprises 10 national 9
时间: 2024-01-21 10:03:26 浏览: 104
好的,那我来给你写一下代码:
```python
import string
def get_word_count(filename):
# 读取文件
with open(filename, 'r', encoding='utf-8') as f:
text = f.read()
# 将所有标点转为空格
translator = str.maketrans(string.punctuation + '‘’“”', ' ' * (len(string.punctuation) + 4))
text = text.translate(translator)
# 将所有单词转为小写字母
words = text.lower().split()
# 剔除无用的单词
s = "the,and,of,in,with,a,has,to,it,for,at,is,on,from"
stop_words = set(s.split(','))
words = [w for w in words if w not in stop_words]
# 统计词频
d = {}
for w in words:
d[w] = d.get(w, 0) + 1
# 返回出现频率最高的10个词
return sorted(d.items(), key=lambda x: x[1], reverse=True)[:10]
# 测试
result = get_word_count('cup.txt')
for w, count in result:
print(w, count)
```
代码思路也很简单,先读取文件,将所有标点转为空格,将所有单词转为小写字母,剔除无用的单词,然后统计词频并返回出现频率最高的10个词。
阅读全文