【问题标题】:Changing a list into a string将列表更改为字符串
【发布时间】:2015-10-24 07:51:44
【问题描述】:

我有一个这样的列表:

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

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

【问题讨论】:

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


    【解决方案1】:

    列表中的项目必须是str 类型才能将它们与给定的分隔符连接起来。试试这个:

    ' '.join(map(str, your_list)) # join the resulting iterable of strings, after casting ints
    

    【讨论】:

    • your_list 在这种情况下是 li
    • 我不知道您为什么要将您的列表附加到new_list 以便加入。
    【解决方案2】:

    这是因为 join 需要一个可迭代的字符串序列,而你的包含 int。

    您需要使用列表推导将此列表转换为字符串:

    >>> 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'
    

    【讨论】:

      【解决方案3】:

      错误是尝试将整数连接到字符串中,您可以这样做将每个值转换为字符串,然后连接它们。

      new_list = [str(x) for x in li]
      new_string = " ".join(new_list)
      

      作为单行:

      new_string = " ".join([str(x) for x in li])
      

      【讨论】:

        猜你喜欢
        • 2015-10-28
        • 2010-12-18
        • 2012-05-24
        • 2015-10-24
        • 1970-01-01
        • 1970-01-01
        • 2012-02-24
        • 2021-04-01
        • 1970-01-01
        相关资源
        最近更新 更多