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

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


当前回答

我想说csv库是这里唯一明智的选择,因为它是用来处理所有csv用例的,比如字符串中的逗号等。

输出列表l到csv文件。

import csv
with open('some.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(l)  # this will output l as a single row.  

也可以使用writer.writerows(iterable)将多行输出到csv。

这个例子与Python 3兼容,因为这里的另一个答案使用的是StringIO,即Python 2。

其他回答

难道你不想:

",".join(l)

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

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

@Peter霍夫曼

使用生成器表达式也有产生迭代器的好处,但节省了导入itertools。此外,列表推导式通常优先于映射,因此,我希望生成器表达式优先于imap。

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

下面是一个带有列表的例子

>>> myList = [['Apple'],['Orange']]
>>> myList = ','.join(map(str, [i[0] for i in myList])) 
>>> print "Output:", myList
Output: Apple,Orange

更准确:

>>> myList = [['Apple'],['Orange']]
>>> myList = ','.join(map(str, [type(i) == list and i[0] for i in myList])) 
>>> print "Output:", myList
Output: Apple,Orange

示例2:

myList = ['Apple','Orange']
myList = ','.join(map(str, myList)) 
print "Output:", myList
Output: Apple,Orange
my_list = ['a', 'b', 'c', 'd']
my_string = ','.join(my_list)
'a,b,c,d'

如果列表包含整数,这将不起作用


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

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

mmm还需要SQL是:

l = ["foo" , "baar" , 6]
where_clause = "..... IN ("+(','.join([ f"'{x}'" for x in l]))+")"
>> "..... IN ('foo','baar','6')"

恩乔伊特