Pythonの文字列の書式設定方法のまとめ


古いやり方
Python 2.6の前に、フォーマット文字列の使用方法は比較的簡単であるが、それが受信できるパラメータの数に制限がある。これらの方法はPython 3.3においても有効であるが、これらの方法は完全に淘汰されるという暗黙の警告があり、現在はまだ明確なタイムスケジュールがない。
フォーマット浮動小数点数:

pi = 3.14159
print(" pi = %1.2f ", % pi)
複数の置換値:

s1 = "cats"
s2 = "dogs"
s3 = " %s and %s living together" % (s1, s2)
十分なパラメータがありません。
古いフォーマットの方法を使って、私はよく「Type Error:not enough argments formating string」を間違えました。変数の数を数え間違えたので、下記のようなコードを作成すると変数が漏れやすくなります。

set = (%s, %s, %s, %s, %s, %s, %s, %s) " % (a,b,c,d,e,f,g,h,i)
新しいPythonフォーマットの文字列には、番号付けのパラメータが使用できます。これによって、いくつかのパラメータを統計する必要がありません。

set = set = " ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}) ".format(a,b,c,d,e,f,g)

Python 2.xは辞書文字列に基づいてフォーマットされています。

"%(n)d %(x)s" %{"n":1, "x":"spam"}
reply = """
Greetings...
Hello %(name)s!
Your age squared is %(age)s
"""
values = {'name':'Bob', 'age':40}
print rely % values

Python 3.xフォーマット

template = '{0},{1} and {2}'
template.format('spam','ham','eggs')

template = '{motto}, {pork} and {food}'
template.format(motto='spam', pork='ham', food='eggs')

template = '{motto}, {0} and {food}'
template.format('ham', motto='spam', food='eggs')

'{motto}, {0} and {food}'.format(42, motto=3.14, food=[1,2,3])