将列表更改为字符串

时间:2015-08-01 21:29:33

标签: python string list python-3.x spyder

我有一个这样的清单:

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

为什么会发生这种情况,如何解决这个问题,以便获得我想要的输出?

3 个答案:

答案 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])