2 回答
TA贡献1802条经验 获得超6个赞
由于lines
是一个列表,lines.count(word)
因此返回正好等于 的行数word
。这是0
出于两个原因:
全部返回的字符串以
readlines()
换行符结尾(可能最后一行除外)。由于word
不以换行符结尾,因此它永远不会完全匹配它们中的任何一个。即使您删除了换行符,您也是在将单个单词与整行进行比较。因此,除非文件每行包含一个单词,单词后有一个空格,否则 的元素
lines
永远不会完全匹配word
。
另一方面,由于line
是单个字符串,因此计算该匹配项line.count(word)
的子字符串数。该循环将文件所有行中的子字符串数相加。line
word
for
请注意,如果您确实有一行只包含"the "
,您的代码将对该单词计数两次。没必要做
times = lines.count(word)
在循环之前。你应该只初始化times = 0
.
您还可以使用以下sum()
功能:
times = sum(line.count(word) for line in lines)
TA贡献1836条经验 获得超4个赞
这是一个非常简单的方法来读取整个文件并计算出现次数:
book1 = 'imitation_of_christ.txt'
book2 = 'jesus_of_history.txt'
with open(book1, encoding='utf-8') as book1:
book = book1.read()
word = 'the '
times = book.count(word)
print (f"The word '{word}'' appears roughly {times} times in {book1}.")
添加回答
举报