我有一个清单:
>>> l = ['1', '2', '3', '4']
如果我使用 join 语句,
>>> s = ', '.join(l)
会给我输出:
'1, 2, 3, 4'
但是,如果我想要输出为:
'1, 2, 3, 4,'
(我知道我可以使用字符串 concat 但我想知道一些更好的方法)
.
字符串连接是最好的方法:
l = ['1', '2', '3', '4'] # original list
s = ', '.join(l) + ','
但您还有其他选择:
映射到逗号结尾的字符串,然后加入:
l = ['1', '2', '3', '4'] # original list
s = ' '.join(map(lambda x: '%s,' % x, l))
将空字符串附加到加入列表(不要修改原始l
列表!):
l = ['1', '2', '3', '4'] # original list
s = ', '.join(l + ['']).rstrip(' ')
使用字符串格式代替连接:
l = ['1', '2', '3', '4'] # original list
s = '%s,' % (', '.join(l))
如果您使用的是 Python 3,则可以利用 print 内置函数:
print(*l, sep=', ', end=',')
*l
解包元素列表以将它们作为单独的参数传递给打印sep
是一个可选参数,设置为从元素打印的元素之间,这里我将它设置', '
为您需要的空格end
是一个可选参数,将在结果打印字符串的 and 处推送。我将其设置为','
没有空间以满足您的需要您可以通过导入 print 函数从 Python 2.6 开始使用它
from __future__ import print_function
然而,这样做有几个警告:
file
可选参数将文件中的输出重定向到文件中__future__
导入可能会破坏您的代码兼容性,因此如果您的其余代码不兼容,您需要将代码隔离在单独的模块中。长话短说,无论是这种方法还是其他建议的答案,都需要付出很多努力来避免只在结果字符串+','
的末尾添加 ajoin
为了str.join()
工作,包含在可迭代对象(即此处的列表)中的元素本身必须是字符串。如果你想要一个尾随逗号,只需在列表末尾添加一个空字符串。
编辑:充实一下:
l = map(str, [1,2,3,4])
l.append('')
s = ','.join(l)
要包含您显示的空格,您需要在分隔符字符串中有一个空格:
s = ", ".join(l) + ","
或将其设为 DRYer:
sep = ", "
s = (sep.join(l) + sep).rstrip()
在后者中,rstrip()
仅用于删除最后的尾随空格(部分sep
),因为这不在您想要的输出中。这不是最便宜的方法,但很清楚。
首先,','.join(l)
根本不起作用,因为它要求元素是字符串,而它们不是。
您可以修复它并添加尾随逗号,如下所示:
In [4]: ', '.join(map(str, l)) + ','
Out[4]: '1, 2, 3, 4,'
我认为这是迄今为止最干净的方法。
如果你不想串联,事情可能会很糟糕......
>>> l = [1, 2, 3, 4]
>>> repr(l+[0])[1:-3] # or str
'1, 2, 3, 4,'
这个 IDLE 会话是一个很好的例子,展示了如何将列表元素拉入带有尾随逗号的字符串中:
>>> l = ['1', '2', '3', '4']
>>> ' '.join(x+',' for x in l)
'1, 2, 3, 4,'
不知道这是不是你要找的?它虽然有效。
l = [1,2,3,4]
对于 l 中的 num: print(str(num), end=", ")