📜  门| GATE-CS-2015(套装1)|第 65 题(1)

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

题目描述

本题需要编写一个Python函数,实现一个简单的文本计数器。给定一个文本文件,函数应该返回该文件中给定单词出现的次数。

函数签名

def word_counter(file_path: str, word: str) -> int:
    pass

参数说明

  • file_path: 给定文本文件的绝对路径。文件大小不超过1 KB。
  • word: 需要计数的单词,只包含大小写英文字母。单词长度不超过128个字符。

返回值

返回给定单词在文件中出现的次数。如果文件不存在,返回0。

示例

assert word_counter('test_files/test1.txt', 'Hello') == 2
assert word_counter('test_files/test2.txt', 'world') == 1
assert word_counter('test_files/test3.txt', 'Python') == 0

实现思路

本题需要读取一个文本文件,并对文件中指定的单词进行计数。由于文件较小,我们可以直接使用python内置的文件读取函数进行读取。针对每行文本,我们可以通过字符串的split()函数将文本按空格分割为多个单词,然后判断指定单词是否在这个列表中即可。最后将每行中包含指定单词的计数相加即可。

具体实现可以参考以下代码:

def word_counter(file_path: str, word: str) -> int:
    try:
        with open(file_path, 'r') as f:
            count = 0
            for line in f:
                words = line.strip().split()
                count += words.count(word)
            return count
    except FileNotFoundError:
        return 0

我们首先使用python的with open() ...语句打开文件,避免因为异常未正常关闭文件导致资源泄露。针对每个文件的行,我们使用strip()函数去除行末的空格和换行符,并使用split()函数按空格分割成单词列表。针对每个单词列表,我们使用count()函数统计给定单词出现的次数,然后将所有计数求和即可。

由于不存在指定的文件时会产生FileNotFoundError异常,我们需要捕获这个异常并返回0。

总结

本题要求我们熟练掌握文件读取和字符串处理相关的函数,考察计算机编程的基础能力。为了准确处理文件中的字符,我们需要了解文件编码的相关知识。虽然文件比较小,但是我们需要从多个角度思考代码的正确性和健壮性,包括异常处理和性能优化等方方面面。