2 回答
TA貢獻(xiàn)1802條經(jīng)驗 獲得超6個贊
由于lines是一個列表,lines.count(word)因此返回正好等于 的行數(shù)word。這是0出于兩個原因:
全部返回的字符串以
readlines()換行符結(jié)尾(可能最后一行除外)。由于word不以換行符結(jié)尾,因此它永遠(yuǎn)不會完全匹配它們中的任何一個。即使您刪除了換行符,您也是在將單個單詞與整行進(jìn)行比較。因此,除非文件每行包含一個單詞,單詞后有一個空格,否則 的元素
lines永遠(yuǎn)不會完全匹配word。
另一方面,由于line是單個字符串,因此計算該匹配項line.count(word)的子字符串?dāng)?shù)。該循環(huán)將文件所有行中的子字符串?dāng)?shù)相加。linewordfor
請注意,如果您確實有一行只包含"the ",您的代碼將對該單詞計數(shù)兩次。沒必要做
times = lines.count(word)
在循環(huán)之前。你應(yīng)該只初始化times = 0.
您還可以使用以下sum()功能:
times = sum(line.count(word) for line in lines)
TA貢獻(xiàn)1836條經(jīng)驗 獲得超4個贊
這是一個非常簡單的方法來讀取整個文件并計算出現(xiàn)次數(shù):
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}.")
添加回答
舉報
