文字列および 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. で定義されています。