私は次のようなリストを持っています:
>>> l = ['1', '2', '3', '4']
結合ステートメントを使用すると、
>>> s = ', '.join(l)
次のように出力されます:
'1, 2, 3, 4'
しかし、次のように出力したい場合、私がしなければならないこと:
'1, 2, 3, 4,'
(文字列連結を使用できることは知っていますが、もっと良い方法を知りたいです)
.
文字列の連結が最善の方法です。
l = ['1', '2', '3', '4'] # original list
s = ', '.join(l) + ','
ただし、他のオプションもあります。
コンマで終わる文字列にマッピングしてから結合します。
l = ['1', '2', '3', '4'] # original list
s = ' '.join(map(lambda x: '%s,' % x, l))
結合されたリストに空の文字列を追加します (元のリストを変更しないでくださいl
!):
l = ['1', '2', '3', '4'] # original list
s = ', '.join(l + ['']).rstrip(' ')
連結の代わりに文字列フォーマットを使用する:
l = ['1', '2', '3', '4'] # original list
s = '%s,' % (', '.join(l))
Python 3を使用している場合は、print組み込み関数を利用できます。
print(*l, sep=', ', end=',')
*l
要素のリストを解凍して、印刷する個々の引数としてそれらを渡しますsep
は、要素から出力された要素の間に設定されるオプションの引数です。ここでは、必要に応じ', '
てスペースを使用して設定します。end
結果の印刷された文字列のおよびでプッシュされるオプションの引数です。','
私はあなたのニーズに合うようにスペースなしに設定しました印刷関数をインポートすることで、Python2.6以降で使用できます。
from __future__ import print_function
ただし、この方法にはいくつかの注意点があります。
file
または、オプションの引数を使用してファイル内の出力をファイルにリダイレクトできます__future__
インポートによってコードの互換性が失われる可能性があるため、残りのコードに互換性がない場合は、コードを別のモジュールに分離する必要があります。簡単に言えば、この方法または他の提案された回答は、結果の文字列+','
の最後にを追加することを避けるために多くの努力を払っていますjoin
が動作するためstr.join()
には、 iterable に含まれる要素 (つまり、ここではリスト) は、それ自体が文字列でなければなりません。末尾のコンマが必要な場合は、リストの最後に空の文字列を追加してください。
編集:少し肉付けするには:
l = map(str, [1,2,3,4])
l.append('')
s = ','.join(l)
表示したスペースを含めるには、区切り文字列にスペースを含める必要があります。
s = ", ".join(l) + ","
またはそれをより乾燥させます:
sep = ", "
s = (sep.join(l) + sep).rstrip()
後者でrstrip()
は、最後の末尾のスペース (の一部sep
) を削除するためにのみ使用されます。これは、目的の出力に含まれていないためです。これは最も安価な方法ではありませんが、かなり明確です。
連結したくない場合は、ハッキーになる可能性があります...
>>> l = [1, 2, 3, 4]
>>> repr(l+[0])[1:-3] # or str
'1, 2, 3, 4,'
まず、','.join(l)
要素が文字列である必要があるため、まったく機能しませんが、そうではありません。
それを修正して、次のように末尾のコンマを追加できます。
In [4]: ', '.join(map(str, l)) + ','
Out[4]: '1, 2, 3, 4,'
これが最もクリーンな方法だと思います。
この IDLE セッションは、リスト要素を引き抜いて、末尾にコンマを付けた文字列にする方法の良い例です。
>>> l = ['1', '2', '3', '4']
>>> ' '.join(x+',' for x in l)
'1, 2, 3, 4,'
これがあなたが探しているものかどうかわかりませんか?しかし、それは機能します。
l = [1,2,3,4]
for num in l: print(str(num), end=", ")