web-dev-qa-db-ja.com

リストでのPython文字列フォーマットの使用

Python 2.6.5の文字列sを作成します。これには、リストxのエントリ数と一致するさまざまな数の%sトークンが含まれます。フォーマットされた文字列を書き出す必要があります。以下は機能しませんが、私がやろうとしていることを示しています。この例では、3つの%sトークンがあり、リストには3つのエントリがあります。

s = '%s BLAH %s FOO %s BAR'
x = ['1', '2', '3']
print s % (x)

出力文字列を次のようにします。

1 BLAH 2 FOO 3 BAR

90
SabreWolfy
print s % Tuple(x)

の代わりに

print s % (x)
101
infrared

Pythonの format メソッドをご覧ください。次に、次のように書式設定文字列を定義できます。

>>> s = '{0} BLAH {1} BLAH BLAH {2} BLAH BLAH BLAH'
>>> x = ['1', '2', '3']
>>> print s.format(*x)
'1 BLAH 2 BLAH BLAH 3 BLAH BLAH BLAH'
133
Cédric Julien

これに続いて リソースページ 、xの長さが変化する場合、以下を使用できます。

', '.join(['%.2f']*len(x))

リストxから各要素のプレースホルダーを作成します。以下に例を示します。

x = [1/3.0, 1/6.0, 0.678]
s = ("elements in the list are ["+', '.join(['%.2f']*len(x))+"]") % Tuple(x)
print s
>>> elements in the list are [0.33, 0.17, 0.68]
24
neobot

このクールなこと(フォーマット文字列内からリストへのインデックス付け)について学んだばかりなので、この古い質問に追加しています。

s = '{x[0]} BLAH {x[1]} FOO {x[2]} BAR'
x = ['1', '2', '3']
print s.format (x=x)

ただし、スライシングの方法がまだわかりません(フォーマット文字列'"{x[2:4]}".format...の内部)。だれかがアイデアを持っている場合はそれを見つけたいと思いますが、あなたはそれを単にできないと思います。

16
Joran Beasley

1行です。リストのprint()でformatを使用することに対する少し即興的な回答

これはどうですか:(python 3.x)

sample_list = ['cat', 'dog', 'bunny', 'pig']
print("Your list of animals are: {}, {}, {} and {}".format(*sample_list))

format() の使用に関するこちらのドキュメントをお読みください。

11
geekidharsh

これは楽しい質問でした!これを処理する別の方法可変長リストの場合は、.formatメソッドとリストの展開を最大限に活用する関数を作成することです。次の例では、派手な書式設定は使用していませんが、ニーズに合わせて簡単に変更できます。

list_1 = [1,2,3,4,5,6]
list_2 = [1,2,3,4,5,6,7,8]

# Create a function that can apply formatting to lists of any length:
def ListToFormattedString(alist):
    # Create a format spec for each item in the input `alist`.
    # E.g., each item will be right-adjusted, field width=3.
    format_list = ['{:>3}' for item in alist] 

    # Now join the format specs into a single string:
    # E.g., '{:>3}, {:>3}, {:>3}' if the input list has 3 items.
    s = ','.join(format_list)

    # Now unpack the input list `alist` into the format string. Done!
    return s.format(*alist)

# Example output:
>>>ListToFormattedString(list_1)
'  1,  2,  3,  4,  5,  6'
>>>ListToFormattedString(list_2)
'  1,  2,  3,  4,  5,  6,  7,  8'
9
Matt P