8月22日、Pythonのf文字列(f-string)に関するチートシートが公開され、海外で話題を呼んでいる。
以下に、その内容をかいつまんで紹介する。詳しくは元ページを参照いただきたい。
All numbers(すべての数値)
以下の変数を前提とする。
>>> number = 4125.6
>>> percent = 0.3738
例の出力 | 置換フィールド | Fill | Width | Grouping | Precision | Type |
---|---|---|---|---|---|---|
'4125.60' |
{number:.2f} |
.2 |
f |
|||
'4,125.60' |
{number:,.2f} |
, |
.2 |
f |
||
'04125.60' |
{number:08.2f} |
0 |
8 |
.2 |
f |
|
' 4125.60' |
{number: 8.2f} |
8 |
.2 |
f |
||
'4.1e+03' |
{number:.2g} |
.2 |
g |
|||
'4125.6' |
{number:.8g} |
.8 |
g |
|||
'37%' |
{percent:.0%} |
.0 |
% |
これらの指定は整数・浮動小数点いずれにも適用できる。
f
型+精度.n
は小数点以下n
桁を表示する。g
型+精度.n
は有効桁数n
で指数表記(不要な末尾の 0 は省略される)。
Integers(整数)
以下の変数を前提とする。
>>> number = 10
例の出力 | 置換フィールド | Alt | Fill | Width | Grouping | Type |
---|---|---|---|---|---|---|
'0010' |
{number:04d} |
0 |
4 |
d |
||
' 10' |
{number: 4d} |
4 |
d |
|||
'10' |
{number:,} |
, |
||||
'1010' |
{number:b} |
b |
||||
'a' |
{number:x} |
x |
||||
'A' |
{number:X} |
X |
||||
'0xa' |
{number:#x} |
# |
x |
|||
'000a' |
{number:04x} |
0 |
4 |
x |
||
'0000\_1010' |
{number:09\_b} |
0 |
9 |
_ |
b |
整数における空の型指定は d
と同義である。これらの指定は int
のみに適用される。
Strings(文字列)
以下の変数を前提とする。
>>> string = "Python"
例の出力 | 置換フィールド | Fill Char | Align | Width |
---|---|---|---|---|
' Python' |
{string:>20} |
> |
20 |
|
'Python ' |
{string:<20} |
< |
20 |
|
' Python ' |
{string:^20} |
^ |
20 |
|
'0000Python' |
{string:0>10} |
0 |
> |
10 |
これらの指定は str
を含む多くの型(独自のフォーマット仕様を持たない型)で機能する。
All objects(すべてのオブジェクト)
以下は、すべてのオブジェクト型で有効な特殊構文である。:
構文との組み合わせ例も併記する。
Self-Doc | Conversion | Format Spec | Field | 例の出力 |
---|---|---|---|---|
!s |
{expression!s} |
'Hi! ✨' |
||
!r |
{expression!r} |
"'Hi! ✨'" |
||
!a |
{expression!a} |
"'Hi! \\u2728'" |
||
!r |
<10 |
{expression!r:<10} |
"'Hi! ✨' " |
|
\= |
{expression=} |
"name='Trey'" |
||
\= |
{expression = } |
"name = 'Trey'" |
||
\= |
!s |
{expression=!s} |
"name=Trey" |
|
\= |
.2f |
{expression=:.2f} |
'len(name)=4.00' |
変換指定子が空の場合、自己記述式(self-documenting expression)ではないときは !s
と同義である。自己記述式を用いた場合、空の変換指定子は !r
と同義になる。
詳細はPython f-string cheat sheetを参照していただきたい。