我用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
怎么可能?!?
提前感谢任何帮助。
答案 0 :(得分:3)
您似乎有一个列表列表。尝试:
",".join(str(x) for x in data)
答案 1 :(得分:1)
str.join()
只能加入一系列字符串。显然,您的列表中包含的项目本身就是一个列表。
此外,如果您确实需要检查对象的类型,那么更好的方法是
if isinstance(data, list):
...
答案 2 :(得分:0)
data
的第一个元素是list
。它必须是一个字符串,以便str.join()
如图所示工作。事实上,所有元素都必须。
答案 3 :(得分:0)
不要明确检查类型。如果确实需要,请使用isinstance。
由于data
的内容而不是其类型,出现错误。它必须是str.join
方法的字符串列表才能使用它。
答案 4 :(得分:0)
列表的第一个元素也是一个列表,而不是一个字符串。
此外,您无需执行type(data).__name__=='list'
- 只需type(data) is list
更好 - 只需查看isinstance
,因为在大多数情况下您并不真正关心特定类型。
答案 5 :(得分:0)
join
需要一个可迭代的字符串。在你的情况下似乎发生的是你的列表的第一个元素是另一个列表。这就是造成错误的原因。
顺便说一句,if type(data).__name__=='list': ...
和代码一样是非Pythonic。