【发布时间】: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 中将列表“拆分”为字符串的最简单方法是什么?
从字符串创建列表:
s='1\t2\t3\t4'
我们使用:
s.split('\t',-1)
我尝试将拆分功能用于列表:
l=[1,2,3,4]
获取字符串:
s='1\t2\t3\t4'
但我收到了一个AttributeError 告诉该列表没有属性拆分。
【问题讨论】:
那不是分裂,那是加入:'\t'.join(str(i) for i in l)
【讨论】:
TypeError 将被引发,因为您无法将整数连接在一起,因为它们不可迭代。您需要将整数显式转换为字符串。
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 需要一个可迭代的字符串。
【讨论】:
str.split,就像 OP 最初认为他必须做的那样)将更加具有启发性。
【讨论】: