Соединение Python — значения в кавычках

#python

#python

Вопрос:

Я использую функцию соединения в Python для создания строки, например

 a = [a, b, c, d]
b = ",".join(a)
print b

b = a,b,c,d
  

но я хочу

 b = 'a','b','c','d'
  

есть ли способ сделать это, просто используя функцию join (или более короткий способ), а не выполняя

 b = ""
for x in a:
  b  = "'%s'," % x
b = b[:-1]
  

Ответ №1:

 b = ",".join(map(repr, a))
  

Также будет корректно экранировать символы внутри строки, что может быть полезно.

Ответ №2:

 In [1]: a = ['a', 'b', 'c', 'd']

In [2]: print ','.join("'%s'" % x for x in a)
'a','b','c','d'
  

Ответ №3:

 >>> b = ['a', 'b', 'c', 'd']
>>> print ','.join("'{0}'".format(s) for s in b)
'a','b','c','d'
  

Выражение внутри join() является выражением генератора.

Ответ №4:

 b = "'"   "','".join(a)   "'"
  

🙂

Комментарии:

1. Хотя это работает правильно, это не самое логичное решение.

2. Согласен, но это, вероятно, наиболее экономичное по пространству и времени решение. И поскольку это действительно всего лишь однострочник, я бы не слишком беспокоился о концептуальной сложности…

Ответ №5:

 a = ['a', 'b', 'c', 'd']

b = "','".join(a).join("''")