【问题标题】:Joining a list into a string in python [duplicate]在python中将列表加入字符串[重复]
【发布时间】:2014-04-26 05:00:14
【问题描述】:

在 Python 中将列表“拆分”为字符串的最简单方法是什么?

从字符串创建列表:

s='1\t2\t3\t4'

我们使用:

s.split('\t',-1)

我尝试将拆分功能用于列表:

l=[1,2,3,4]

获取字符串:

s='1\t2\t3\t4'

但我收到了一个AttributeError 告诉该列表没有属性拆分。

【问题讨论】:

    标签: python string list


    【解决方案1】:

    那不是分裂,那是加入:'\t'.join(str(i) for i in l)

    【讨论】:

    • 行不通,TypeError 将被引发,因为您无法将整数连接在一起,因为它们不可迭代。您需要将整数显式转换为字符串。
    【解决方案2】:

    str.split 是一种仅在 str 类型上可用的方法。 docs:

    中解释了它是如何工作的

    str.split([sep[, maxsplit]])

    返回字符串中的单词列表,使用sep 作为分隔符字符串。如果 maxsplit 给定,最多maxsplit 拆分是 完成(因此,列表最多有maxsplit+1 个元素)。如果 maxsplit未指定或-1,则无数量限制 分割数(所有可能的分割都进行了)。


    你要在这里使用的是str.join:

    >>> l = [1, 2, 3, 4]
    >>> map(str, l) # Just to demonstrate
    ['1', '2', '3', '4']
    >>> '\t'.join(map(str, l))
    '1\t2\t3\t4'
    >>>
    

    根据docs:

    str.join(iterable)

    返回一个字符串,它是可迭代 iterable 中字符串的串联。元素之间的分隔符是字符串 提供这个方法。

    在上面的例子中,str.join 获取map(str, l) 返回的字符串列表:

    ['1', '2', '3', '4']
    

    并将其所有项目连接在一起,以\t分隔每个项目。结果是字符串:

    '1\t2\t3\t4'
    

    另外,如果您想知道,map 在上面的示例中用于将整数列表转换为字符串列表。另一种方法是使用list comprehension:

    >>> l = [1, 2, 3, 4]
    >>> '\t'.join([str(x) for x in l])
    '1\t2\t3\t4'
    >>>
    

    两种解决方案大致相同,但您需要使用其中一种,因为str.join 需要一个可迭代的字符串。

    【讨论】:

    • 这里只使用一个生成器其实就足够了:)
    • @SamyArous - 是的,但通常效率较低。见here。
    • +1 用于包含地图和列表 comp。关于如何转换回列表的推论(使用str.split,就像 OP 最初认为他必须做的那样)将更加具有启发性。
    • @iCodez 这其实很有趣。谢谢你的链接:)
    • @adsmith - 很抱歉,但我不知道你的意思。如果我没记错的话,OP 已经知道如何将字符串转换为列表。他在走另一条路时遇到了麻烦。
    【解决方案3】:

    你可以这样做。

    l = [1, 2, 3, 4]
    '\t'.join([str(x) for x in l])
    

    join-Python docs

    【讨论】:

    • 这实际上会引发 TypeError。您必须先将整数转换为字符串
    猜你喜欢
    • 1970-01-01
    • 2023-02-08
    • 2023-03-08
    • 2017-11-20
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    相关资源
    最近更新 更多