文字列オブジェクトは一つのユニークな組み込み演算を持っています。それは、 左側に文字列引数を伴った%演算子(モジュロ)で、この文字列をCの sprintf()フォーマット文字列として解釈して右側の引数に適用し、 このフォーマット演算の結果の文字列を返します。
右側の引数はフォーマット文字列で要求される個々の項目に対応した要素を持つタプルでなければなりません。フォーマット文字列が一つだけ引数を要求する場合は、右側の引数はタプルではない一つのオブジェクトであってもかまいません。
2.4
%, c, s, i, d, u, o,
x, X, e, E, f, g, Gといったフォーマット文字を理解します。
幅と精度には*を指定できます。これは、実際の幅または精度を指定する整数引数を明記するために使われます。フラグ文字
-, +, スペース, # および 0が使えます。
サイズ指定h, l または Lはあっても良いですが無視されます。%s変換はすべてのパイソンオブジェクトに有効で、フォーマットする前にstr()を使ってオブジェクトを文字列に変換します。
ANSIの特徴である%p と %nはサポートされていません。
パイソンの文字列ははっきりした長さを持っているので、%s変換は文字列の最後が'\0'であることを仮定しません。
安全のために、浮動小数の精度は50に制限され、絶対値が1e25を越える数値に対する%f変換は%g変換に置き換えられます。 2.5 他のすべてのエラーは例外を発生させます。
右側の引数が辞書(またはすべてのマッピングタイプ)の場合、文字列内のフォーマット指定は括弧で囲まれたキーを持ち、"%"文字の直後にその辞書が指定されなければなりません。それぞれのフォーマットはマッピングから対応するエントリをフォーマットします。
例:
>>> count = 2 >>> language = 'Python' >>> print '%(language)s has %(count)03d quote types.' % vars() Python has 002 quote types.
この場合*指定はフォーマット内には現われません。(なぜなら連続した引数リストが必要だからです。)
付加的な文字列演算が標準モジュールstringと組み込みモジュール reで定義されています。
guido@python.org