如何从字符串列表中生成逗号分隔的字符串?

2024-04-23 14:34:57 发布

您现在位置:Python中文网/ 问答频道 /正文

您希望采用什么方式将序列中的字符串连接起来,以便在每两个连续对之间添加一个逗号。也就是说,例如,如何将['a', 'b', 'c']映射到'a,b,c'?(案例['s'][]应分别映射到's'''。)

我通常使用类似''.join(map(lambda x: x+',',l))[:-1]的东西,但也感到有些不满意


Tags: lambda字符串map方式序列案例逗号join
3条回答

",".join(l)不适用于所有情况。我建议将csv模块与StringIO一起使用

import StringIO
import csv

l = ['list','of','["""crazy"quotes"and\'',123,'other things']

line = StringIO.StringIO()
writer = csv.writer(line)
writer.writerow(l)
csvcontent = line.getvalue()
# 'list,of,"[""""""crazy""quotes""and\'",123,other things\r\n'
my_list = ['a', 'b', 'c', 'd']
my_string = ','.join(my_list)
'a,b,c,d'

如果列表包含整数,则此操作无效


如果列表包含非字符串类型(如整数、浮点、布尔、无),则执行以下操作:

my_string = ','.join(map(str, my_list)) 

为什么是map/lambda魔法?这不管用吗

>>> foo = ['a', 'b', 'c']
>>> print(','.join(foo))
a,b,c
>>> print(','.join([]))

>>> print(','.join(['a']))
a

如果列表中有数字,您可以使用列表理解:

>>> ','.join([str(x) for x in foo])

或生成器表达式:

>>> ','.join(str(x) for x in foo)

相关问题 更多 >