2011-05-03 70 views
1

我有這個代碼的代碼在Python:Python列表和類型錯誤

if type(data).__name__=='list': 
       print type(data).__name__ 
       print ",".join(data) 

而且它給我這個錯誤:

print ",".join(data) 
exceptions.TypeError: sequence item 0: expected string, list found 

這怎麼可能?!?

在此先感謝anyhelp。

回答

0

data的第一個元素是list。它必須是一個字符串,以便str.join()按所示方式工作。實際上,所有元素都必須。

1

str.join()只能加入一串字符串。顯然你的列表包含一個項目,它本身又是一個列表。

此外,如果你真的需要檢查的對象,一個更好的方式來做到這一點的類型是

if isinstance(data, list): 
    ... 
+0

啊...我很愚蠢......我的列表包含一些名單...抱歉打擾你的所有。但是,無論如何感謝關於isinstance – kirikouille 2011-05-03 14:40:53

0

不明確檢查的類型。如果您確實需要,請使用isinstance

由於data的內容而不是其類型,因此顯示錯誤。它需要是str.join方法的字符串列表。

0

列表的第一個元素也是一個列表,而不是一個字符串。

你也不必做type(data).__name__=='list' - 只是type(data) is list

更妙的是 - 只是isinstance檢查,因爲你真的不關心在大多數情況下,一個特定的類型。

+1

的提示/更好 - 。* /更好 - 只是不檢查類型。/';) – delnan 2011-05-03 14:36:46

0

join預計可迭代字符串。你的情況似乎發生的是你的列表的第一個元素是另一個列表。這是導致錯誤的原因。

順便說一句,if type(data).__name__=='list': ...是代碼獲取的非pythonic。

3

您似乎有一個列表的列表。嘗試:

",".join(str(x) for x in data) 
+0

你先生救了我的一天。 – 2012-10-16 14:34:40