2016-03-30 154 views
0

我即蟒蛇如何打印字符串列表用雙引號

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

我想要的清單在管道或逗號分隔的格式打印出來,但是因爲我的一些列表對象可以有逗號或管道,我想環繞當我打印

每個對象的雙引號即輸出應該是

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

我不能在我的Python版本

的使用格式
+0

'打印(。 ' 「{}」' 格式(MyString的)) ' –

回答

4

創建一個生成器來格式化每個元素,然後解壓縮並使用自定義分隔符。如果您在print()函數首先使用Python 2,import(這可以安全地在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'是一個函數)。如果您使用的是Python 2,您可以在文件頂部執行'from __future__ import print_function'來獲得該行爲。 – 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"