2 回答

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