プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2020/01/07

[Python] 文字列の出力

update2021/08/13 event_note2020/01/07 0:59

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