【初心者向け】Python f文字列(f-strings)とは何か?

Pythonにはf文字列(f-strings、フォーマット済み文字列リテラル)を用いることで、より短い記法で文字列を埋め込むことも可能です。

従来では、文字列メソッドformat()を用いることが一般的でしたが、Python3.6からf文字列が導入されたため、最新のPython環境の場合はf文字列を使うと良いでしょう。Python 2.7や3.5など、以前のバージョンでは、.format()を使う必要があります。

f文字列は、文字列の前にfもしくは大文字のFを記述します。

例:f’文字列’ もしくは F’文字列’

例えば以下のように埋め込むことが可能です。

a = "f文字列を使って埋め込む"
print(f"{a}")

出力結果

f文字列を使って埋め込む

f文字列(f-strings)と.format()メソッドの書式の違い

f-strings を用いたサンプルコード

name = "Python"
print(f"Hello, {name}") # Hello, Python

.format()メソッド を用いたサンプルコード

name = "Python"
print("Hello, {}".format(name)) # Hello, Python

それぞれの最大の違いは、f-stringが変数名を直接文字列内に埋め込むのに対し、format()メソッドはプレースホルダを使用して後から変数を埋め込む点です。また、Pythonのバージョンが3.6以前などの場合f-stringが使えません。その場合、format()メソッドを使用する必要があります。それらを意識して使い分ける必要があります。

その他の書式指定

f文字列(f-strings)では、{}内の:の後ろに書式指定文字列を指定することで様々な書式を指定できます。この記事では、小数点以下の桁数の扱いと%表記を説明します。

小数点以下の桁数の扱い

まずはじめに以下のコードを解説します。

x = 1234567.89
print(f"{x:.2f}") # 1234567.89

一番左側のfは、フォーマット済み文字列リテラルを示しています。これにより、文字列内の波括弧 {} 内に変数や式を記述できます。
{x:.2f}の部分では、変数xの値を浮動小数点数(小数点以下2桁)で表示するように指定しています。なお{x:.3f}の場合は、変数xの値を浮動小数点数(小数点以下3桁)で表示するように指定することを意味します。

:は、書式指定子を開始します。
書式指定子は、波括弧内の変数名または式の直後に配置されます。これにより、表示される値の幅や埋め込み文字、数値の表示形式など、さまざまなオプションを指定することができます。

.2fは、浮動小数点数として表示し、小数点以下の桁数を2桁に制限することを示しています。

上記より、1234567.89がそのまま出力されています。

以下の例でも考えてみましょう。

x = 1234567.89
print(f"{x:.0f}") # 1234568
print(f"{x:.1f}") # 1234567.9

まずprint(f"{x:.0f}")ですが、小数点以下の桁数を0に制限するため、1234567.89 の小数点以下の部分を見ます。この場合、小数点以下の部分は .89 です。.89 を四捨五入すると 1 になります。
後に、元の整数部分と四捨五入した小数部分を結合します。整数部分は 1234567 で、四捨五入した小数部分は 1 です。そのため、結果は 1234567 + 1 = 1234568 になります。

よって、以上の手順により、print(f"{x:.0f}")の出力結果は1234568になります。

print(f"{x:.1f}") の場合も同様です。
小数点以下の桁数を1に制限するため、1234567.89 の小数点以下の部分を見ます。
この場合、小数点以下の部分は .89 です。
小数点以下の最初の桁を四捨五入するため、次の桁を見ます。ここでは、次の桁は 9 です。
9 は5以上なので、最初の桁(この場合は 8)を1増やします。
そのため、.89 を四捨五入すると 0.9 になります。

最後に、元の整数部分と四捨五入した小数部分を結合します。整数部分は 1234567 で、四捨五入した小数部分は 0.9 です。そのため、結果は 1234567.9 になります。

%表記

続いて%表記です。

x = 0.123
print(f'小数点以下を2桁でパーセント表記で表示: {x:.2%}')
# 小数点以下を2桁でパーセント表記で表示: 12.30%

x = 0.123:変数 x に浮動小数点数 0.123 を代入します。
print(f'小数点以下を2桁でパーセント表記で表示: {x:.2%}'):この部分で f-string を使っています。x: {f:.2%} という文字列を生成する際に、{f:.2%} の部分で、f の値をパーセント表記に変換し、小数点以下2桁まで表示するように指定しています。
:.2% は書式指定子です。この指定子は、浮動小数点数をパーセント表記に変換し(%)、小数点以下2桁(.2)まで表示するように指定しています。
f の値 0.123 をパーセント表記に変換すると、12.30% になります。
12.30% になる理由ですが、書式指定子 :.2% に従って、小数点以下を2桁で表示するように指定されているため、12.30% となります。
(書式指定子が :.1% の場合は12.3%となります。)
最終的な文字列は 「小数点以下を2桁でパーセント表記で表示: 12.30%」 となり、これが print 関数によって出力されます。

おわりに

この記事では、f文字列に関して学びました。

f文字列(f-strings)を用いると、format()を用いずに文字列の埋め込みが出来ます。Pythonのバージョンが3.6以前のバージョンでは使えませんのでその点だけ注意してください。

Pythonを効率よく学ぶには、現役のデータサイエンティストや機械学習エンジニアに質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。