2014-11-08 43 views
1

我試圖從一個文件'input.txt'中讀取一行,每行編號。然後,我需要檢查每一行,看看這行中的字母是否可以用來表示'aardvark'這個詞。大寫字母也可以使用,字母可以在整個行中傳播。該文本文件的內容是:查找文件中的字

No aardv*rks here! 

Only armadillos and anteaters. 

Animals are run down: very awful road kill. 

I prefer a quick guacamole made from avocados. 

所以線3和4應該只返回一個積極的,如「土豚在第3行」。

我已經得到了這麼多 - 我被卡住了!

file = open('input.txt').read().lower() 
listed = file.split('\n') 
for sentence in listed: 
    a = sentence.count('a') 
    r = sentence.count('r') 
    d = sentence.count('d') 
    v = sentence.count('v') 
    k = sentence.count('k') 
    if a==3 and r==2 and d==1 and v==1 and k==1: 
    print('Aardvark on line '+listed[sentence]) 

請理解,我正在學習初學者教程,所以請不要使用那些會讓我微小脆弱的頭腦發瘋的奇特功能!

非常感謝預期。

編輯

這是解決了所有的解決方案。非常感謝再次捐款!

file = open('input.txt').read().lower() 
listed = file.split('\n') 
for index, sentence in enumerate(listed): 
    a = sentence.count('a') 
    r = sentence.count('r') 
    d = sentence.count('d') 
    v = sentence.count('v') 
    k = sentence.count('k') 
    if a>=3 and r>=2 and d>=1 and v>=1 and k>=1: 
    print('Aardvark on line '+str(index+1)) 
+1

你應該使用'> ='因爲你可以得到'aarrrrrddddvaaaarkkkk'' – Luigi 2014-11-08 19:34:20

+0

衛生署 '從'aardvark'''!好地方!正確的,有點工作,只是試圖讓號碼打印在最後一行 - 我的代碼沒有這樣做#error – Mathmos 2014-11-08 19:46:08

+0

@Mathmos,如果你這樣做:'爲我,在枚舉(列出)的句子:'你可以用'i'作爲櫃檯。 – DuckPuncher 2014-11-08 19:47:00

回答

0

open('input.txt').read()將文件的全部內容讀入內存。因此,如果input.txt是足夠長的文件,計算機將耗盡其可用內存。相反,嘗試使用文件迭代器逐行讀取一行,例如

for i,listed in enumerate(open('input.txt')): 
    sentence = listed.lower() 
    a = sentence.count('a') 
    # ... etc. 

另請參閱In Python, why do we need readlines() when we can iterate over the file handle itself?

+0

好點!教程提到了一些相關的東西!看起來我通過了作業而沒有觸發這個問題,但是要注意更大的文件。 – Mathmos 2014-11-09 10:38:01

0
for n, line in enumerate(open('input.txt')): 
    letters = list('aardvark') 
    for c in line.lower(): 
    if c in letters: 
     letters.remove(c) 
    if not letters: 
    print('Aardvark on line', n + 1) 
+0

請詳細說明此代碼將執行的操作以及如何幫助OP。花點時間看看[如何寫出一個好答案](https://stackoverflow.com/help/how-to-answer)。 – Hizqeel 2017-03-01 09:45:11