输出列表为可变大小的格式化字符串

时间:2019-06-02 18:21:20

标签: python

我正在尝试编写一个可以获取列表并将其转换为字符串的函数,其中每个值都用行分隔。

我尝试过使用格式化的字符串乘法

d = ["one", "two", "three"]

dstring = ("{}\n"*(len(d)-1)).format(d)

print(dstring)

我的预期结果是,列表中的每个元素都会生成一组大括号,然后仅使用列表即可对其进行格式化。

所以它将返回

one
two
three

以及该格式的其他任何元素,如果列表变大。

但是它返回

IndexError: tuple index out of range

3 个答案:

答案 0 :(得分:1)

使用str.join,它将列表中的项目连接在一起,并在它们之间提供定界符,在我们的情况下为\n

d = ["one", "two", "three"]
res = '\n'.join(d)
print(res)
#one\ntwo\nthree

输出为

one
two
three

或者,如果您希望在每个列表的末尾附加\n,则可以使用列表理解

d = ["one", "two", "three"]
res = [f'{item}\n' for item in d]
print(res)

输出为

['one\n', 'two\n', 'three\n']

答案 1 :(得分:0)

为此,我将使用简短列表理解:

d = ["one", "two", "three"]

c = [b+"\n" for b in d]

print(c)

这将为您提供所需的输出:

['one\n', 'two\n', 'three\n']

答案 2 :(得分:0)

format需要n个参数,例如通过使用*

dstring = ("{}\n"*len(d)).format(*d)