当前位置:  开发笔记 > 编程语言 > 正文

你如何从字符串列表中创建逗号分隔的字符串?

如何解决《你如何从字符串列表中创建逗号分隔的字符串?》经验,为你挑选了7个好方法。

什么是从序列连接字符串的首选方法,以便在每两个连续对之间添加逗号.也就是说,你如何映射,比如,['a', 'b', 'c']'a,b,c'?(案例['s'][]应分别映射到's''')

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

编辑:我很惭愧和高兴,解决方案是如此简单.显然我几乎不知道我在做什么.(我可能在过去需要"简单"连接,并以某种方式记忆['a', 'b', 'c']为速记'a,b,c'.)



1> Mark Biek..:
my_list = ['a', 'b', 'c', 'd']
my_string = ','.join(my_list)

如果列表包含数字,则无效.


正如里卡多·雷耶斯所建议的,如果它包含非字符串类型(例如整数,浮点数,布尔值,无),那么:

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



2> jmanning2k..:

为什么地图/ lambda魔术?这不行吗?

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

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

编辑:@ mark-biek指出数字的情况.也许列表理解:

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

更"pythonic".

Edit2:谢谢你的建议.我将来会使用生成器而不是列表理解.

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


如果我想要'a,b和c`怎么办?

3> Ricky..:

",".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'


@RonKalian在Python 3中使用`from io import StringIO`

4> jfs..:

这是Python 3.0中的替代解决方案,它允许非字符串列表项:

>>> alist = ['a', 1, (2, 'b')]

一种标准的方式

>>> ", ".join(map(str, alist))
"a, 1, (2, 'b')"

替代解决方案

>>> import io
>>> s = io.StringIO()
>>> print(*alist, file=s, sep=', ', end='')
>>> s.getvalue()
"a, 1, (2, 'b')"

注意:逗号后的空格是故意的.



5> Douglas Leed..:

你不想要:

",".join(l)

显然,如果你需要在值中引用/转义逗号等,它会变得更复杂.在这种情况下,我建议查看标准库中的csv模块:

https://docs.python.org/library/csv.html



6> Aaron Maenpa..:

@Peter Hoffmann

使用生成器表达式还可以生成迭代器,但可以保存导入的itertools.此外,列表推导通常优先映射,因此,我希望生成器表达式优于imap.

>>> l = [1, "foo", 4 ,"bar"]
>>> ",".join(str(bit) for bit in l)
'1,foo,4,bar' 



7> Shameem..:
>>> my_list = ['A', '', '', 'D', 'E',]
>>> ",".join([str(i) for i in my_list if i])
'A,D,E'

my_list可能包含任何类型的变量.这避免了结果'A,,,D,E'.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有