【Python入門】f文字列とは?基本的な使い方やformatとの違いについて解説

Pythonでは、基本的に1つの値に対して1つのデータ型を持つ形となっています。(例えば「テスト」は文字列、「123」は数値(整数)など)

これに対し、文字列内に数値や式を埋め込む方法として、Python 3.6より新しく「f文字列」という機能が導入されました。

この記事では、「f文字列」の概要と基本的な使い方、また同様の機能を持つ「formatメソッド」との違いについて紹介したいと思います。

目次

f文字列とは?

f文字列とは、内部に波括弧{ }で囲まれた変数や値を含み、かつ先頭に「f (もしくはF)」が付いている文字列を指します。

通常、print関数などで異なるデータ型を出力する場合、それぞれ分けて記述する必要があります。

一方で、f文字列を使うと直感的に変数や数値を埋め込むことが可能です。

word = "test"
print("これは", 1, "回目の", word, "です", sep="")  #通常の記述方法
print(f"これは{1}回目の{word}です")  # f文字列を使用した場合

= 実行結果 =

これは1回目のtestです
これは1回目のtestです

基本的な使い方

f文字列を使う最大のメリットとして、出力する数値や変数ごとに書式設定ができる点があげられます。

表示形式や精度の指定など様々できるのですが、今回はその中でも特に頻度の高いものについて紹介したいと思います。

桁数を指定する場合

表示する数値の桁数を指定したい場合は、波括弧{ }で囲んだ値に「:.[桁数]g」を付けます。

print(f"{123.45:.1g}")  # 1桁表示
print(f"{123.45:.2g}")  # 2桁表示
print(f"{123.45:.3g}")  # 3桁表示
print(f"{123.45:.4g}")  # 4桁表示
print(f"{123.45:.5g}")  # 5桁表示
print(f"{123.45:.6g}")  # 6桁表示

= 実行結果 =

1e+02
1.2e+02
123
123.5
123.45
123.45

「e+02」とは、「10の2乗(10^2=100)」を表す指数になります。

このように、実際の桁数よりも表示桁数の方が少ない場合は、指数表示などの形で数値が丸め込まれます

上では四捨五入しているように見えますが、実際には「丸め」という処理が行われており、端数がちょうど0.5の場合に偶数になる方へ切り捨て/切り上げされます
(例えば、14.5の場合は14、15.5の場合は16)

一方で、表示桁数の方が大きくなってしまっても、実際の桁数以上に出力されることはありません。

小数点以下の表示を指定する場合

小数点以下の有効数字を指定する場合は、波括弧{ }で囲んだ値に「:.[有効数字]f」を付けます。

print(f"{1.2345:.1f}")  # 小数第1位まで表示
print(f"{1.2345:.3f}")  # 小数第3位まで表示
print(f"{1.2345:.5f}")  # 小数第5位まで表示

= 実行結果 =

1.2
1.234
1.23450

実際の桁数よりも表示桁数の方が小さい場合は数値が丸め込まれ、逆に大きい場合は足りない分がゼロ埋めされる形で表示されます。

数値のゼロ埋めをする場合

例えば会員番号など、桁数を揃えつつ余った部分を0(ゼロ)で埋めたい場合は、波括弧{ }で囲んだ値に「:0」を付けます。

ただ、このままでは「いくつ0(ゼロ)で埋めればいいのか?」がわからないので、その後に表示したい全体の桁数を「=[桁数]」の形で記述してください。

print(f"会員番号は{123:0=8}です")  # 全体を8桁で表示し、余りをゼロ埋めをする

= 実行結果 =

会員番号は00000123です

桁区切りをする場合

数値が大きくなってくると、3桁ごとにカンマ( , )区切りして表示したい場面も出てくるかもしれません。

その場合は、 波括弧{ }で囲んだ値に「:,」を付けます。

print(f"{123456789:,}")  # 数値(123456789)をカンマ区切りで表示

= 実行結果 =

123,456,789

表示位置を指定する場合

表示位置をどちらか一方や中央に揃えたい場合は、波括弧{ }で囲んだ値に「:[配置指定]」を付けます。

配置指定説明
<左寄せで表示
>右寄せで表示
^中央揃えで表示

このままでは値の前後に余白が設けられない形で表示されるので、「:[配置指定]」の後に表示したい全体の文字(桁)数もあわせて記述してください。

num = 12345
print(f"あなたは{num:<9}人目の会員です")  # 9文字(桁)の左寄せで表示
print(f"あなたは{num:>9}人目の会員です")  # 9文字(桁)の右寄せで表示
print(f"あなたは{num:^9}人目の会員です")  # 9文字(桁)の中央揃えで表示

= 実行結果 =

あなたは12345    人目の会員です
あなたは    12345人目の会員です
あなたは  12345  人目の会員です

formatメソッドとの違い

冒頭でも記載した通り、Python 3.6にてf文字列が登場する前は「format」と呼ばれるメソッドが使われていました。

formatでは、文字列の後ろに埋め込みたい数値や変数を「.format()」の形で記述します。

双方の違いについてですが、結論から言うと基本的な機能や書式の指定方法はほぼ同じです。

print("{:.3f}".format(1.2345))  # formatメソッドの場合
print(f"{1.2345:.3f}")  # f文字列の場合

= 実行結果 =

1.234
1.234

ただし、f文字列のメリットとして複数の値を埋め込む場合に、より直感的な記述がしやすいといった点があげられます。

word = "test"
print("{} {} {:.3f}".format(word, 1+1, 1.2345))  # 埋め込む順番で値を{}内に記述
print(f"{word} {1+1} {1.2345:.3f}")  # f文字列の場合は、そのまま埋め込める

= 実行結果 =

test 2 1.234
test 2 1.234

まとめ

この記事では、「f文字列」の概要と基本的な使い方、従来の「formatメソッド」との違いについて紹介しました。

f文字列は、Python 3.6と比較的新しく追加された機能であるため、既にPythonを使い慣れている方は若干抵抗を感じるかもしれません。

しかし、formatメソッドより使い勝手がいい面も多くあるため、これを機にぜひチャレンジしてみてください。

シェアはこちらから
目次