2016-07-29 22 views
0

嗨,我想知道當你使用這個方法有什麼不對這個代碼如何解決「列表索引必須是整數,沒有列出」

f = open('test.txt', 'a+') 
yourResult = [line.split(',') for line in f.readlines()] 
for answer in yourResult: 
    print (yourResult[answer]) 

a = raw_input('What Was That') 
Format = (answer + ' : ' + a + ', ') 
f.write(Format) 
print (Format) 
File = open('test.txt', 'r') 
+0

'answer'還是一個列表。你應該清楚'yourResult'。如果沒有,你可以「打印」它。 –

+0

在空閒時間看看這個 - 「在處理文件對象時使用'with'關鍵字是一種很好的做法,這有一個好處,就是它的套件完成後文件被正確關閉,即使在路上發生異常「。 https://docs.python.org/3/tutorial/inputoutput.html – Xyrus

回答

0

answer是的要素之一yourResult,而不是這種元素的索引。
做你想要使用索引什麼,做:

for answer in range(len(yourResult)): 
    print(yourResult[answer]) 

在這種情況下,你會看裏面yourResult使用索引。

如果沒有,你可以這樣做:

for answer in yourResult: 
    print(answer) 

在這種情況下,你直接循環在數組中的元素,從而不需要通過索引來訪問它們。

1

yourResult[answer]不能工作,[]的整數期待。當你這樣做:

for answer in yourResult:answer名單(感謝bruno desthuilliers)。

你應該這樣做:

for answer in yourResult: 
    print (answer) 

這裏,答案是yourResult[0],然後yourResult[1]等。

+0

在這種情況下,'answer'實際上是一個'list',參見構建'yourResult'時的'line.split()'調用。 –

1

Python的for循環不會產生指標,但序列本身的項目,所以在這裏,在循環中,answer已經是yourResult的元素。督察,你想:

for answer in yourResult: 
    print (answer) 

補充說明:

1/A file對象是一個迭代的,所以你不需要使用readlines(),你可以(也應該)直接通過迭代文件(它將避免加載在內存中的全部內容):

2/open()是上下文管理器,它需要照顧的正確關閉文件。

代碼的乾淨的版本將被:

with open('test.txt', 'r') as f: 
    yourResult = [line.split(',') for line in f] 

for answer in yourResult: 
    print(answer) 
+0

是的,這個應該是被接受的答案,'with open'很重要 – pwnsauce

0

你並不需要使用

print(yourResult[answer]) 

使用

print(answer) 

會做什麼,我希望你要。 由於已創建yourResult作爲一個列表,yourResult [X]預計x至是一個從0到LEN(yourResult)-1。 這樣做

for answer in yourResult 

您反覆設定答案在yourResult每個項目。

相關問題