2016-03-30 6 views
0

を文字列のリストを印刷するには、私はすなわち私はパイプまたはカンマ区切り形式でこれをプリントアウトする方法二重引用符で

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

リストを持っているのpythonが、私のリストオブジェクトの一部は、カンマを持つことができますので、または私は、Pythonの私のバージョンでフォーマットを使用することはできません

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

あるべきパイプ、私は、出力すなわち

を印刷するとき、各オブジェクトの周りに二重引用符をラップしたいと思います

+0

'プリント( ' "{}"' 形式(文字列MyStringを)。) ' –

答えて

4

各要素を書式設定するジェネレータを作成し、それを展開してカスタムセパレータを使用します。あなたが最初のPython 2、importprint()機能を使用している場合(これは安全に同様の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を使用している場合は、ファイルの先頭に '__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" 
関連する問題