web-dev-qa-db-ja.com

Python

私はString.Format("[{0}, {1}, {2}]", 1, 2, 3)のような何かをしたい:

[1, 2, 3]

Pythonでこれを行うにはどうすればよいですか?

31
Joan Venge

以前の回答では、%=フォーマットを使用しましたが、これはPython 3.0+で段階的に廃止されています。Python 2.6+書式設定システムは次のとおりです。

http://docs.python.org/library/string.html#formatstrings

さらに高度な機能もありますが、最も単純なフォームは、あなたが書いたものに非常に近いものになります。

>>> "[{0}, {1}, {2}]".format(1, 2, 3)
[1, 2, 3]
61
DNS

次の3つの方法で実行できます。


Pythonの自動プリティプリンティングを使用します。

print [1, 2, 3]   # Prints [1, 2, 3]

変数で同じことを示す:

numberList = [1, 2]
numberList.append(3)
print numberList   # Prints [1, 2, 3]

「クラシック」文字列置換を使用します(ala Cのprintf)。ここで、文字列書式指定子としての%の異なる意味と、リスト(実際にはTuple)を書式設定文字列に適用するための%に注意してください。 (また、%は算術式の剰余(剰余)演算子として使用されることに注意してください。)

print "[%i, %i, %i]" % (1, 2, 3)

定義済みの変数を使用する場合、これを行うにはTupleに変換する必要があります。

print "[%i, %i, %i]" % Tuple(numberList)

Python 3文字列のフォーマット。これは以前のバージョン(2.6から)でも引き続き使用可能ですが、Py 3でそれを行う「新しい」方法です。引数、または名前付き引数(それのために、逆の順序で並べました。

print "[{0}, {1}, {2}]".format(1, 2, 3)

名前 'one'、 'two'および 'three'が意味をなすことに注意してください。)

print "[{one}, {two}, {three}]".format(three=3, two=2, one=1)
27
Peter

pythonのCのsprintf関数に基づいた文字列フォーマットを探しています。

print "[%s, %s, %s]" % (1, 2, 3)

完全なリファレンスについては、こちらをご覧ください: http://docs.python.org/library/stdtypes.html#string-formatting

18
chills42

要素を順番に出力するには、インデックスを指定せずに{}を使用します

print('[{},{},{}]'.format(1,2,3))

(python 2.7以降およびpython 3.1)以降で動作します)

5
Riccardo Galli

あなたはあまり立派に自分自身を策定していませんが、私はこれがあなたが探しているものであると推測します:

foo = "Hello"
bar = "world"
baz = 2
print "%s, %s number %d" % (foo, bar, baz)
2
JosefAssad

あなたには多くの解決策があります:)

シンプルな方法(Cスタイル)

print("[%i, %i, %i]" %(1, 2, 3))

str.format()を使用

print("[{0}, {1}, {2}]", 1, 2, 3)

使用 str.Template()

s = Template('[$a, $b, $c]')
print(s.substitute(a = 1, b = 2, c = 3))

PEP 3101-Advanced String Formatting と読むことができます

1
RaminNietzsche

私はこの組み合わせが不足していると思う:P

"[{0}, {1}, {2}]".format(*[1, 2, 3])
1
radeklos

python 3.6に到達したPEP 498は、基本的にformatの短縮形であるリテラル文字列補間を追加しました。

次のことができます。

f"[{1}, {2}, {3}]"

私が役に立つと思う他の一般的な用途は次のとおりです。

pi = 3.141592653589793
today = datetime(year=2018, month=2, day=3)

num_2 = 2     # Drop assigned values in
num_3 = "3"   # Call repr(), or it's shortened form !r
padding = 5   # Control prefix padding
precision = 3 #   and precision for printing


f"""[{1},
     {num_2},
     {num_3!r},
     {pi:{padding}.{precision}},
     {today:%B %d, %Y}]"""

生成されるもの:

"[1,\n     2,\n     '3',\n      3.14,\n     February 03, 2018]"
1
toofarsideways

リストにあるアイテムの数がわからない場合、このアプローチは最も普遍的です

>>> '[{0}]'.format(', '.join([str(i) for i in [1,2,3]]))

'[1, 2, 3]'

文字列のリストは簡単なものです

>>> '[{0}]'.format(', '.join(['a','b','c']))
'[a, b, c]'
0
Yupa