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'