Python2.6から使用可能なstr.format関数。旧来の%形式の文字列フォーマットよりも好ましい書き方。
波括弧で囲まれたフィールドにパラメータを埋め込んで文字列を指定する。波括弧自体を扱う場合は二重に記述してエスケープする。{{, }}
詳細について 7.1.3. 書式指定文字列の文法
>>> "My Name is {0}.".format("John") #インデックスを指定して埋め込み
'My Name is John.'
>>> "My Name is {0}. Hello {1}".format("John", "Taro")
'My Name is John. Hello Taro'
# キーワード引数で指定
>>> "My Name is {person1}. Hello {person2}".format(person1="John", person2="Taro")
'My Name is John. Hello Taro'
# ディクショナリで指定する場合はアンパックすればよい
>>> d = {"name": "John", "age": 20}
>>> "My name is {name}. I'm {age} years old.".format(**d) #アンパックしてキーワード引数に
"My name is John. I'm 20 years old."
# 属性の取得
>>> class Person:
... def __init__(self, name, age):
... self.name = name
... self.age = age
...
>>> p = Person('John', 25)
>>> p.name
'John'
>>> "My name is {0.name}. I'm {0.age} years old.".format(p) #p.name, p.ageを埋め込み
"My name is John. I'm 25 years old."
書式指定の詳細は、こちらを参照。
7.1.3.1. 書式指定ミニ言語仕様
# 幅指定
>>> "{0:<10}".format("Hello") #10文字幅。左寄せ
'Hello '
>>> "{0:^10}".format("Hello") #10文字幅。センタリング
' Hello '
>>> "{0:>10}".format("Hello") #10文字幅。右寄せ
' Hello'
>>> "{0:_>10}".format("Hello") # 詰め文字に_を指定。10文字幅。右寄せ
'_____Hello'
>>> "{0:0>6}".format(123) #前ゼロ埋め
'000123'
# 数値(10進, 16進, 8進, 2進)
>>> "int: {0:d}; hex: {0:X}; oct: {0:o}; bin: {0:b}".format(42)
'int: 42; hex: 2A; oct: 52; bin: 101010'
# 数値 3桁カンマ区切り (Python2.7以降)
>>> "{0:,d}".format(1234567)
'1,234,567'
# 固定小数点3桁
>>> "{0:.3f}".format(12.34)
'12.340'
# 日付フォーマット
>>> import datetime
>>> d = datetime.datetime.now()
>>> "{0:%Y-%m-%d %H:%M:%S}".format(d)
'2012-10-07 08:15:03'