📅  最后修改于: 2023-12-03 15:28:44.854000             🧑  作者: Mango
本题为 GATE-CS-2016 (Set 2) 的第30题。考查了解程序的正则表达式、文件操作和数据结构的知识。题目要求实现一个程序,从给定的一个文件中读取字符串,统计其中包含的单词频率,并按照单词出现的频率从高到低进行排名,最终输出排名前10的单词及其出现频率。
with open('filename.txt', 'r') as f:
content = f.read()
以上代码将文件 'filename.txt' 中的内容读取到一个字符串变量 content 中。
import re
words = re.findall(r'\b\w+\b', content)
以上代码使用 Python 的正则表达式模块 re,提取字符串中的所有单词并存入列表 words 中。正则表达式 \b\w+\b
用来匹配单词,其中 \b
表示单词边界,\w+
表示匹配一个或多个单词字符。
freq = {}
for word in words:
freq[word] = freq.get(word, 0) + 1
以上代码使用字典 freq 来存储每个单词出现的次数。对字符串中的每个单词进行遍历,如果字典中已经存在该单词,将次数加一,否则将该单词添加到字典中并设置次数为1。
top_words = sorted(freq.items(), key=lambda x: x[1], reverse=True)[:10]
for word, freq in top_words:
print(word, freq)
以上代码使用 sorted 函数对字典 freq 进行排序,将结果存入列表 top_words 中。其中 key 参数指定按照频率进行排序。列表切片 [:10] 取出前十个元素,依次输出单词和出现频率即可。
本题考查了正则表达式、文件操作和字典等知识,通过利用 Python 提供的相关模块,可以方便地实现该功能。掌握文件操作和数据结构的基本使用方法,可以更好地应对实际工作中遇到的问题。