从一个序列中连接字符串,使每两个连续的对之间添加一个逗号,您的首选方法是什么?也就是说,你如何映射,例如,['a', 'b', 'c']到'a,b,c'?(case ['s']和[]应该分别映射为's'和''。)

我通常会用“。”Join (map(lambda x: x+',',l))[:-1],但也感到有些不满意。


当前回答

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

My_list可以包含任何类型的变量。这样就避免了“A…D,E”的结果。

其他回答

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

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

标准方式 >>> ", "。加入(地图(str,倾斜的)) a, 1, (2, 'b') 替代解决方案 >>>导入IO >>> s = io.StringIO() >>> print(*alist, file=s, sep=', ', end= ") > > > s.getvalue () a, 1, (2, 'b')

注意:逗号后的空格是有意的。

除非我遗漏了什么,','.join(foo)应该做你所要求的。

>>> ','.join([''])
''
>>> ','.join(['s'])
's'
>>> ','.join(['a','b','c'])
'a,b,c'

(编辑:正如jmanning2k指出的那样,

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

更安全,而且相当python化,尽管如果元素可以包含逗号,则结果字符串将难以解析——在这一点上,您需要csv模块的全部功能,Douglas在他的回答中指出。)

如果你想做快捷方式:):

','.join([str(word) for word in wordList])

但如果你想用逻辑来炫耀:):

wordList = ['USD', 'EUR', 'JPY', 'NZD', 'CHF', 'CAD']
stringText = ''

for word in wordList:
    stringText += word + ','

stringText = stringText[:-2]   # get rid of last comma
print(stringText)

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

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'

难道你不想:

",".join(l)

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

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