2013-03-30 30 views
0

使用下面的代碼:使用.split()內爲在Python循環給出錯誤

def printformatted(statuses): 
    for status in statuses: 
     statusid, statussummary = status.split(",",1) 
     print "\nSnapshot id: %s" % statusid 
     print "Summary:  %s" % statussummary 
    print 

printformatted("1,Some summary")給我的錯誤ValueError: need more than 1 value to unpack,而printformatted(["1,Some summary"])沒有。 爲什麼?

+1

你的意思是採取'*狀態'而不是'狀態'? –

+0

@Lattyware特赦?你能給我一個例子,或者解釋*操作符會做什麼?如果我沒有錯,在一個函數中使用它可以讓函數使用不確定數量的參數,比如C的'printf()'。如果是這樣,for循環能夠迭代它嗎? – Jetlef

+0

'* statuses'意味着'statuses'將會是一個其他參數列表, chauah','yourname,secondname'])',例如。 –

回答

2

在第一種情況下,您傳遞的是字符串,因此for status in statuses會逐個字符地遍歷字符串,這不是您想要的。

在第二種情況下,您正在傳遞一個列表,因此for status in statuses會遍歷其元素,第一個元素是"1,Some summary"

+0

我想我終究會想出來的,但是多虧了你,我在不到一分鐘的時間內解決了我的疑問 - 儘管因爲這樣一個瑣碎的事情而困擾社區而奄奄一息。謝謝! – Jetlef