- item1
- item2
- item3
>>> l = ['1', '2', '3', '4']
如果我使用join语句,
>>> s = ', '.join(l)
输出结果为:
'1, 2, 3, 4'
但是,如果我希望输出如下:
'1, 2, 3, 4,'
(我知道可以使用字符串拼接,但我想知道更好的方法)
.
字符串拼接是最好的方法:
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))
print(*l, sep=', ', end=',')
*l
会将元素列表解包以将它们作为单独的参数传递给打印函数。sep
是一个可选参数,用于在打印时在元素之间设置间隔符号。在这里,我将其设置为', '
,并加上一个空格,以满足您的要求。end
是一个可选参数,将被添加到结果字符串的末尾。我将其设置为','
,不带空格,以满足您的需求。您可以在Python 2.6及以上版本中通过导入打印函数来使用它。
from __future__ import print_function
file
可选参数将输出重定向到文件中。__future__
导入可能会破坏代码兼容性,因此如果其余代码不兼容,则需要将您的代码隔离在单独的模块中。join
结果字符串末尾添加+','
。str.join()
方法,可迭代对象(例如列表)中的元素必须是字符串。如果你想要在最后一个元素后加上逗号,只需在列表末尾添加一个空字符串即可。
编辑说明:稍微详细解释一下:l = map(str, [1,2,3,4])
l.append('')
s = ','.join(l)
要包含您所示的空格,您需要在分隔符字符串中有一个空格:
s = ", ".join(l) + ","
或者让它更加DRY:
sep = ", "
s = (sep.join(l) + sep).rstrip()
", "
,另一个是 ","
(注意缺少空格)。因此,我并不认为你的论点适用于这里。 - NPE','.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]
for num in l: print(str(num), end=", ")
l
改为s
或者反过来? - okmmap(lambda)
is ugly IMO. Use a generator expression instead:'%s,' % x for x in l
- wjandrea