为什么这个函数统计一个文件中的字符总是return0?

Why does this function to count characters in a file always return 0?

我一直在尝试定义一个函数,它获取 2 个输入(一个字符和一个文件路径)和 returns 字符在其中出现的次数。我知道使用 method.count 有更短的方法,但我想知道为什么这个函数总是 returns 0.

def lettercount(character , path):
    with open("bear.txt") as myfile:
        counter = [obj for obj in myfile if obj==character]
        return len(counter)

当您遍历文件 (myfile) 时,您会得到行 (obj)。所以 obj==character 只有在文件的最后一行是 character 并且没有尾随换行符时才会为真。


要遍历字符,您可以在理解中添加另一个循环:

c for line in myfile for c in line if c==character

尽管如此,您实际上并不需要保留字符本身,因为您只需要它们的数量。您可以像这样使用 sum()

count = sum(c==character for line in myfile for c in line)
return count