我有一个这样的清单:
li = [1, 2, 3, 4, 5]
我想将其更改为字符串,删除引号,并删除逗号,使其看起来像这样:
1 2 3 4 5
我尝试了以下内容:
new_list = []
new_list.append(li)
new_string = " ".join(new_list)
print new_string
然而我收到以下错误:
TypeError:序列项0:预期的str实例,int found
为什么会发生这种情况,如何解决这个问题,以便获得我想要的输出?
答案 0 :(得分:3)
列表中的项目必须是str
类型才能将它们与给定的分隔符连接起来。试试这个:
' '.join(map(str, your_list)) # join the resulting iterable of strings, after casting ints
答案 1 :(得分:1)
这是因为join期望一个可迭代的字符串序列,而你的字符串包含int。
您需要使用list comprehension将此列表转换为字符串:
>>> li
[1, 2, 3, 4, 5]
>>> new_li = [str(val) for val in li]
>>> new_li
['1', '2', '3', '4', '5']
或常规for循环:
>>> for x in range(len(li)):
... li[x] = str(li[x])
...
>>> li
['1', '2', '3', '4', '5']
那么你的表达就可以了。
>>> result = ' '.join(li)
>>> result
'1 2 3 4 5'
答案 2 :(得分:0)
错误来自尝试将整数连接到字符串中,您可以这样做将每个值转换为字符串,然后加入它们。
new_list = [str(x) for x in li]
new_string = " ".join(new_list)
作为一个单行:
new_string = " ".join([str(x) for x in li])