[解決!Python]f文字列の置換フィールドをネストさせて、整数や浮動小数点数の書式化方法を動的に切り替えるには解決!Python

f文字列の置換フィールドの内部にはさらに置換フィールドを記述できる。これを使って、複数の値を1つの置換フィールドに埋め込める。その使用例を紹介。

» 2022年05月24日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

# 浮動小数点数の精度を変更する
n = 123.4567

result = f'{n:.5f}'
print(result)  # 123.45670

precision = 5
result = f'{n:.{precision}f}' 
print(result)  # 123.45670

for precision in range(5):
    result = f'{n:.{precision}f}'
    print(result)
# 出力結果:
#123
#123.5
#123.46
#123.457
#123.4567

# 2進/10進/16進の切り替え
n = 2050

for flg in ['b', 'd', 'x']:
    tmp = "_b" if flg == "b" else "#08x" if flg == "x" else "+08d"
    result = f'{n:{tmp}}'
    print(result)
# 出力結果:
#1000_0000_0010
#+0002050
#0x000802


f文字列の置換フィールドをネストさせる

 Pythonのf文字列では置換フィールド内に置換フィールドをネストさせて記述できる。例えば、以下のようなコードについて考える。

n = 123.4567

result = f'{n:.5f}'
print(result)  # 123.45670


 この例では置換フィールド(波かっこ「{}」で囲まれた部分)に変数nの値を小数点以下5桁の値として埋め込んでいる。何らかの理由で、小数点以下の有効桁数をコードの実行時に動的に変更したくなったとしよう。この値を変数precisionに格納するとする。すると、これを実現するコードは次のようになる。

precision = 5
result = f'{n:.{precision}f}' 
print(result)  # 123.45670


 ここでは、変数nと変数precisionという2つの値を1つの置換フィールドに埋め込む必要があるので、置換フィールドをネストさせている。単一のf文字列で別々の部分に置換フィールドを置いて、それらに変数や式の値を埋め込むのであれば、このようにネストさせる必要はない。

 置換フィールドをネストさせることで、複数の変数や式の値をf文字列に埋め込める。以下は小数点以下の有効桁数を増やしながら、変数nの値を出力する例だ。

for precision in range(5):
    result = f'{n:.{precision}f}'
    print(result)
# 出力結果:
#123
#123.5
#123.46
#123.457
#123.4567


 小数点以下の有効桁数が切り替わっていることに注目されたい。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。