C# の文字列補間のような書き方で文字列を出力できないかなと思って調べたら、f-string
(フォーマット済み文字列リテラル)というのがそれに該当するようです。
環境
- Windows 10
- Python 3.8.1
f-string
Python 3.6 以降で使えるようです。
a = "hoge"
b = 1234
c = 0.1234
print(f'{a} {b} {c}')
hoge 1234 0.1234
書式指定
以下、書式指定の方法です。
左寄せ、中央寄せ、右寄せ
<
^
>
で左寄せ、中央寄せ、右寄せができ、全体の文字数を数値で指定する。
a = "hoge"
b = 1234
c = 0.1234
print(f'{a:>10}|{b:>10}|{c:>10}|')
print(f'{a:^10}|{b:^10}|{c:^10}|')
print(f'{a:<10}|{b:<10}|{c:<10}|')
hoge| 1234| 0.1234|
hoge | 1234 | 0.1234 |
hoge |1234 |0.1234 |
ゼロ埋め
ゼロパディングは数値に対してのみ有効です。
(文字列に対して指定するとエラーになりました)
a = 1.2345
b = 1234
c = -1.2345
d = -1234
print(f'{a:08}')
print(f'{b:08}')
print(f'{c:08}')
print(f'{d:08}')
001.2345
00001234
-01.2345
-0001234
小数点以下の桁数、有効桁(有効数字)
こちらも数値に対してのみ有効です。
(文字列に対して指定するとエラーになりました)
a = 1.2345
b = 1.2
c = 1234
d = -1.2345
e = -1.2
f = -1234
print(f'{a:.3f}')
print(f'{b:.3f}')
print(f'{c:.3f}')
print(f'{d:.3f}')
print(f'{e:.3f}')
print(f'{f:.3f}')
1.234
1.200
1234.000
-1.234
-1.200
-1234.000
ゼロパディングとの組み合わせ
a = 1.2345
b = 1.2
c = 1234
d = -1.2345
e = -1.2
f = -1234
print(f'{a:010.3f}')
print(f'{b:010.3f}')
print(f'{c:010.3f}')
print(f'{d:010.3f}')
print(f'{e:010.3f}')
print(f'{f:010.3f}')
000001.234
000001.200
001234.000
-00001.234
-00001.200
-01234.000
左寄せ、中央寄せ、右寄せとの組み合わせ
a = 1.2345
b = 1.2
c = 1234
d = -1.2345
e = -1.2
f = -1234
print(f'{a:>10.3f}|{b:>10.3f}|{c:>10.3f}|{d:>10.3f}|{e:>10.3f}|{f:>10.3f}|')
print(f'{a:^10.3f}|{b:^10.3f}|{c:^10.3f}|{d:^10.3f}|{e:^10.3f}|{f:^10.3f}|')
print(f'{a:<10.3f}|{b:<10.3f}|{c:<10.3f}|{d:<10.3f}|{e:<10.3f}|{f:<10.3f}|')
1.234| 1.200| 1234.000| -1.234| -1.200| -1234.000|
1.234 | 1.200 | 1234.000 | -1.234 | -1.200 |-1234.000 |
1.234 |1.200 |1234.000 |-1.234 |-1.200 |-1234.000 |
符号表示
こちらも数値に対してのみ有効です。
(文字列に対して指定するとエラーになりました)
a = 1234
b = -1234
print(f'{a:+}')
print(f'{b:+}')
+1234
-1234
ゼロパディングとの組み合わせ
a = 1.2345
b = -1.2345
print(f'{a:+08}')
print(f'{b:+08}')
+01.2345
-01.2345
小数点以下桁数との組み合わせ
a = 1.2345
b = -1.2345
print(f'{a:+.3f}')
print(f'{b:+.3f}')
+1.234
-1.234
左寄せ、中央寄せ、右寄せとの組み合わせ
a = 1.2345
b = -1.2345
print(f'{a:>+10}|{b:>+10}|')
print(f'{a:^+10}|{b:^+10}|')
print(f'{a:<+10}|{b:<+10}|')
+1.2345| -1.2345|
+1.2345 | -1.2345 |
+1.2345 |-1.2345 |
桁区切り
a = 123456789.123456789
b = -123456789.123456789
print(f'{a:,}')
print(f'{b:,}')
123,456,789.12345679
-123,456,789.12345679
桁数、左寄せ、中央寄せ、右寄せとの組み合わせ
a = 123456789.123456789
b = -123456789.123456789
print(f'{a:^20,.3f}')
print(f'{b:>20,.3f}')
123,456,789.123
-123,456,789.123