2016-03-30 2 views
0

У меня есть список, т.е.питона, как распечатать список строк с двойными кавычками

my_list = ['a', 'b', 'c', 'd','e','f'] 

Я хочу напечатать это в трубе или разделенные запятыми формата, а потому, что некоторые из моего списка объектов могут иметь запятые или трубы, я хотел бы, чтобы обернуть двойные кавычки вокруг каждого объекта, когда я печатаю

т.е. выход должен быть

"a"|"b"|"c"|"d"|"e"|"f" rather than a|b|c|d|e|f 

я не могу использовать формат на моей версии питона

+0

'печать (. ' "{}" В' формате (MyString)) ' –

ответ

4

Создайте генератор, который форматирует каждый элемент, затем распакуйте его и используйте специальный разделитель. Если вы используете Python 2, import функция print() первый (это можно безопасно сделать в Python 3, а):

>>> from __future__ import print_function 
>>> print(*('"{}"'.format(item) for item in my_list), sep='|') 
"a"|"b"|"c"|"d"|"e"|"f" 
+0

Я получаю недопустимую синтаксическую ошибку – shecode

+0

@shecode Ответ имеет синтаксис Python 3 (' print' - это функция). Вы можете сделать «из __future__ import print_function» в верхней части файла, чтобы получить это поведение, если используете Python 2. – univerio

+0

Не удается избежать двойных кавычек в элементах. –

0
>>> print '"' + '"|"'.join(my_list) + '"' 
"a"|"b"|"c"|"d"|"e"|"f" 
+1

Работает хорошо, но не кажется очень pythonic. – MarkyPython

+0

1. Почему это не pythonic? 2. Я подозреваю, что это наиболее эффективное решение. – Boa

+2

Я предпочитаю использовать '' "{}" '. Format (...) 'вместо'' '' + ... + '"''. Не очень понятно иметь тонну вложенных/чередующихся кавычек. – univerio

1
>>> "|".join(['"{0}"'.format(x) for x in my_list]) 
"a"|"b"|"c"|"d"|"e"|"f" 
+0

Я не могу использовать формат моей версии python – shecode

+1

, какова ваша версия python? – haifzhan

+0

Не удается избежать двойных кавычек в элементах. –

3

Не делайте этого самостоятельно. Вы будете пытаться справиться со всеми угловыми делами. (Что делать, если ваши поля могут иметь двойные кавычки в них?) Используйте csv модуль вместо:

s = StringIO() 
writer = csv.writer(s, delimiter="|") 
writer.writerow(["a", "b", "c", "d,", "e|", "foo\"bar"]) 
print i.getvalue() 

Вы получаете:

a|b|c|d,|"e|"|"foo""bar" 
Смежные вопросы