【问题标题】:Convert a Python list of lists to a single string将 Python 列表转换为单个字符串
【发布时间】:2021-01-17 10:09:19
【问题描述】:

我有一个由字符和整数组成的列表,如下所示:

list = [[65], [119, 'e', 's', 'i'], [111, 'd', 'l'], [111, 'l', 'w'], [108, 'd', 'v', 'e', 'i'], [105, 'n'], [97, 'n'], ['111', 'k', 'a']]

我想把它转换成这样的单个字符串:

"65 119esi 111dl 111lw 108dvei 105n 97n 111ka"

我试过这个:

new_list = [' '.join(x for x in list)]

但它给了我这个错误:

TypeError: sequence item 0: expected str instance, list found

那我该怎么办,我是编码新手!

【问题讨论】:

  • 先解决内心的问题。
  • stackoverflow.com/questions/952914/…' '.join(map(str, reduce(operator.add, [[65], [119, 'e', 's', 'i'], [111, 'd', 'l'], [111, 'l', 'w'], [108, 'd', 'v', 'e', 'i'], [105, 'n'], [97, 'n'], ['111', 'k', 'a']])))
  • 作为建议,不要使用list 来命名列表对象。这会导致混乱。
  • 有其他方法吗? @翘曲
  • 是的,选择其他任何东西:a = list([1,2,3]), b=list([1,2,3])。只是不是 list = list([1,2,3])

标签: python python-3.x string list


【解决方案1】:

你得到的错误是因为 .join() 期望字符串连接在一起,但你传递给它的是一个列表(子数组之一)。

一个班轮是:

" ".join(["".join([str(item) for item in sublist]) for sublist in your_list])

请注意,这只适用于一级嵌套数组。如果您有更多或不确定的,最好编写自己的函数来完成这项工作。

【讨论】:

    【解决方案2】:

    为了更容易看到正在发生的事情,您可以使用:

    final_string = ""
    for elem in list:
        final_string = final_string + " "
        for el in elem:
            final_string = final_string +str(el)
    

    【讨论】:

      【解决方案3】:

      您的子列表中也有整数,需要在加入之前进行转换。您可以执行以下操作,使用map 对令牌进行字符串转换,并使用str.join 将它们拼凑在一起:

      lst = [[65], [119, 'e', ... ]  # do NOT call a variable "list"
      
      new_lst = " ".join("".join(map(str, sub)) for sub in lst)
      # '65 119esi 111dl 111lw 108dvei 105n 97n 111ka'
      

      【讨论】:

        猜你喜欢
        • 2013-10-21
        • 2015-04-14
        • 2016-11-09
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 2017-11-15
        • 1970-01-01
        • 2022-01-17
        相关资源
        最近更新 更多