📜  门| GATE-CS-2009 |第 60 题(1)

📅  最后修改于: 2023-12-03 15:28:43.401000             🧑  作者: Mango

主题:GATE-CS-2009 第60题

介绍:

该题目要求对一个给定的文本文件中的所有单词进行计数,并输出单词以及它们在文件中出现的次数。

我们需要采取以下步骤:

  1. 将文本文件读入内存中的一个字符串。
  2. 将字符串中的标点符号和空格去除,只保留单词。
  3. 将单词转换为小写形式,以便进行比较。
  4. 使用哈希表(Python中可以使用字典来实现)来记录每个单词出现的次数。
  5. 输出哈希表中的结果,按照字母表的顺序进行排序。

以下是Python实现的代码片段:

import string

# 读入文件并将标点符号、空格等过滤掉,只保留单词
with open("filename.txt", "r") as file:
    text = file.read()
words = text.translate(str.maketrans('', '', string.punctuation)).split()

# 将单词转换为小写形式
words = [word.lower() for word in words]

# 使用字典记录每个单词出现的次数
word_count = {}
for word in words:
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1

# 按照字母表的顺序输出结果
for word in sorted(word_count.keys()):
    print(word, word_count[word])

以上代码首先使用with语句读入文本文件,并使用str.translate()方法将标点符号和空格过滤掉,得到一个单词列表。随后使用列表解析将所有单词转换为小写形式,以便进行比较。

接下来,我们使用一个字典来记录每个单词出现的次数。如果单词已经在字典中,则将其次数加1;否则,我们将该单词添加到字典中,并将其出现次数初始化为1。

最后,使用sorted()函数对字典的键进行排序,并输出各个单词以及它们出现的次数。

这段代码非常简洁,并且能够完成该题目的要求。