Python 文字列の書式指定とフォーマット
Python の文字列の概要については「Python の文字列」をみてください。
Python で文字列をフォーマットする方法は何種類かあります。
f-String によるフォーマット
フォーマット文字列に f をつけると、文字列リテラルに変数を埋め込むことができます。これを f-String (f 文字列) といいます。
f String では、文字列中に {変数名} と記述することでその箇所に指定した変数の値が入ります。
>>> a = 'Hello'
>>> b = 'world'
>>> f'{a}, {b}!' # 先頭に f を付ける
'Hello, world!'
format 関数によるフォーマット
次の方法はformat()関数を使う方法です。主に数値のフォーマットに使います。
フォーマット文字列の中で {n} とすることで、format() 関数へ渡した変数のインデックスを指定できます。
番号付けを行わない場合は {} 出現位置の順番に自動的に番号付けされます。最初の {}がインデックス 0 で、次が 1 という具合です。
>>> i = 333
>>> j = 777
>>> '{0} {1}'.format(i,j)
'333 777'
>>> '{} {}'.format(i,j)
'333 777'
>>> '{1} {0}'.format(i,j)
'777 333'
番号付けの省略と明示的な指定は混在させることはできません。例えば '{1} {}' と指定するとエラーになります。
{}ではインデックス番号ではなく、キーワードで指定することもできます。format 関数の引数で、キーワードに対する値を設定します。
>>> x = 'John'
>>> 'Hi, {name}!'.format(name=x)
'Hi, John!'
フォーマットの指定は、フォーマット文字列中の{} 内にコロンに続けて、フォーマットを指定します。
書式指定 | 意味 |
---|---|
s | 文字列。(省略しても同様)
|
< | 利用可能な幅の中で左寄せ
|
> | 利用可能な幅の中で右寄せ
|
^ | 利用可能な幅の中で中央表示
|
= | 左端に符号を表示
|
+ | 正の数の場合に + の符号を表示
|
' ' | 空白文字は正の数の場合はスペースを表示し、負の場合は - を表示
|
, | 3桁毎にカンマ , を表示
|
_ | 3桁毎にアンダスコア _を表示
|
b | 2進数で表示
|
d | 10進数で表示
表示幅は書式指定の前の数字で行います。
|
e | 数値を科学表記 (指数を小文字のeで記載)
|
E | 数値を科学表記 (指数を大文字のeで記載)
|
f | 小数点表記。 m.nf とすることで、全部で m 文字幅、小数点以下 n 桁として指定 (m は省略可)。
\(\infty\) を表す inf や数字ではないことを示す NaN (Not a Number) などの文字は小文字で表記。 |
F | 小数点表記。基本的に f と同一であるが、文字表記が大文字になる。
|
g | 一般表記。小数点表記または科学表記。指数表示の e は小文字。
|
G | 一般表記。小数点表記または科学表記。指数表示の E は大文字。 |
o | 8進数表記
|
x | 16進数表記。アルファベットは小文字。
|
X | 16進数表記。アルファベットは大文字。
|
% | パーセント表記 (100倍して % 記号を付ける)
|
c | ユニコードの文字に変換
|
% 演算子によるフォーマット
フォーマット文字列に % を付けパラメータリストを渡すことで、format() 関数と同様にフォーマットできます。
ただし、フォーマット文字列中では % に続けて書式指定を書きます。
>>> '%s %.2f' % ('pi = ', 3.1415)
'pi = 3.14'