文字列および Unicode オブジェクトには固有の操作: % 演算子
(モジュロ) があります。この演算子は文字列 フォーマット化
または 補間 演算としても知られています。
format % values (format は文字列または
Unicode オブジェクト)とすると、format 中の % 変換指定は
values 中のゼロ個またはそれ以上の要素で置換されます。
この動作は C 言語における sprintf() に似ています。
format が Unicode オブジェクトであるか、または %s
変換を使って Unicode オブジェクトが変換される場合、その結果も
Unicode オブジェクトになります。
format が単一の引数しか要求しない場合、values は タプルでない単一のオブジェクトでもかまいません。 2.9それ以外の場合、values はフォーマット文字列中で指定された項目と 正確に同じ数の要素からなるタプルか、単一のマップオブジェクトでなければ なりません。
一つの変換指定子は 2 またはそれ以上の文字を含み、その構成要素は 以下からなりますが、示した順に出現しなければなりません:
(someone)) 。
% 演算子の右側の引数が辞書の場合 (またはその他のマップ型の場合)、
文字列中のフォーマットには、辞書に挿入されているキーを丸括弧で囲い、文字
"%" の直後にくるようにしたものが含まれていなければ
なりません 。マップキーはフォーマット化したい値をマップから
選び出します。例えば:
>>> print '%(language)s has %(#)03d quote types.' % \
{'language': "Python", "#": 2}
Python has 002 quote types.
この場合、 * 指定子をフォーマットに含めてはいけません
(* 指定子は順番付けされたパラメタのリストが必要だからです。)
変換フラグ文字を以下に示します:
| フラグ | 意味 |
|---|---|
| # | 値の変換に (下で定義されている) ``別の形式'' を使います。 |
| 0 | 数値型に対してゼロによるパディングを行います。 |
| - | 変換された値を左寄せにします ("0" と同時に与えた 場合、"0" を上書きします) 。 |
| (スペース) 符号付きの変換で正の数の場合、前に一つスペースを空けます (そうでない場合は空文字になります) 。 | |
| + | 変換の先頭に符号文字 ("+" または "-") を付けます("スペース" フラグを上書きします) 。 |
精度長変換子として、h 、 l 、および L を使う
ことができますが、Python では必要ないため無視されます。
変換型を以下に示します:
| 変換 | 意味 | 注釈 |
|---|---|---|
| d | 符号付き 10 進整数。 | |
| i | 符号付き 10 進整数。 | |
| o | 符号なし 8 進数。 | (1) |
| u | 符号なし 10 進数。 | |
| x | 符号なし 16 進数 (小文字)。 | (2) |
| X | 符号なし 16 進数 (大文字)。 | (2) |
| e | 指数表記の浮動小数点数 (小文字). | |
| E | 指数表記の浮動小数点数 (大文字). | |
| f | 10 進浮動小数点数。 | |
| F | 10 進浮動小数点数。 | |
| g | 指数部が -4 以上または精度以下の場合には "e" 、それ以外の場合には "f" と同じ。 | |
| G | 指数部が -4 以上または精度以下の場合には "E" 、それ以外の場合には "F" と同じ。 | |
| c | 文字一文字 (整数または一文字からなる文字列を受理します)。 | |
| r | 文字列 (python オブジェクトを repr() で変換します)。 | (3) |
| s | 文字列 (python オブジェクトを str() で変換します)。 | (4) |
| % | 引数を変換せず、返される文字列中では文字 "%" になります。 |
注釈:
'0x' または '0X'
(フォーマット文字が "x" か "X" かに依存します)
が挿入されます。
%r 変換は Python 2.0 で追加されました。
Python 文字列には明示的な長さ情報があるので、%s 変換において
'\0' を文字列の末端と仮定したりはしません。
安全上の理由から、浮動小数点数の精度は 50 桁でクリップされます;
絶対値が 1e25 を超える値の %f による変換は %g
変換で置換されます 2.10その他のエラーは例外を送出します。
その他の文字列操作は標準モジュール string および re.で定義されています。