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}.")
添加回答
舉報