为什么这个函数统计一个文件中的字符总是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
我一直在尝试定义一个函数,它获取 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