プログラミング

Pythonのf文字列とは?フォーマット済み文字列リテラルを解説!(f-string:変数埋め込み:フォーマット:式展開:書き方など)

当サイトでは記事内に広告を含みます

Pythonで文字列の中に変数を埋め込みたいとき、どのような方法を使っていますか?古くから使われてきた%演算子やformat()メソッドに比べ、f文字列(f-string)は直感的でシンプルな書き方ができることから、現代のPythonプログラミングでは主流の方法となっています。

フォーマット済み文字列リテラルとも呼ばれるf-stringは、Python 3.6から導入された機能です。変数埋め込みや式展開、小数点のフォーマットなど、幅広い用途に対応しており、コードの可読性を大きく高めてくれます。

この記事では、f文字列の基本的な書き方から応用的なフォーマット指定まで、サンプルコードを交えながらわかりやすく解説していきます。初めてf-stringに触れる方も、より深く使いこなしたい方もぜひ参考にしてください。

Pythonのf文字列はフォーマット済み文字列リテラルの最もシンプルな書き方

それではまず、f文字列の基本概念と基本的な書き方について解説していきます。

f文字列とは、文字列の先頭に「f」または「F」をつけることで、文字列の中に変数や式を直接埋め込めるPython独自の構文です。波括弧{}の中に変数名や式を書くだけで、実行時に自動的に値へと展開されます。

最も基本的な書き方を見てみましょう。


# f文字列の基本的な書き方
name = "ゴリラ"
age = 5

result = f"{name}の年齢は{age}歳です。"
print(result)

# 出力結果:ゴリラの年齢は5歳です。

文字列の前に「f」をつけ、埋め込みたい変数を{}で囲むだけで完成です。非常にシンプルな構文でありながら、可読性が高いのがf-stringの魅力といえるでしょう。

f文字列はPython 3.6以降でのみ使用できます。それ以前のバージョンではformat()メソッドや%演算子を使う必要があります。現在開発に使うなら、積極的にf-stringを活用しましょう。

f文字列と他のフォーマット方法の比較

Pythonには文字列フォーマットの方法が複数あります。それぞれの書き方を比較してみましょう。

方法 書き方の例 特徴
%演算子 “%s is %d” % (name, age) 古い書き方・型指定が必要
format()メソッド “{} is {}”.format(name, age) 柔軟だが記述が長くなりがち
f文字列 f”{name} is {age}” 簡潔・可読性が高い・推奨

3つの方法の中でf文字列が最も直感的で読みやすい書き方です。新しく書くコードにはf-stringを使うのがおすすめです。


# 3つの方法を比較
item = "アボカド"
price = 298

# %演算子
print("%sの価格は%d円です。" % (item, price))

# format()メソッド
print("{}の価格は{}円です。".format(item, price))

# f文字列
print(f"{item}の価格は{price}円です。")

# 出力結果:アボカドの価格は298円です。
# 出力結果:アボカドの価格は298円です。
# 出力結果:アボカドの価格は298円です。

出力結果は同じですが、f文字列の書き方が最もスッキリしていることがわかります。

f文字列でシングルクォートとダブルクォートを使う

f文字列はシングルクォートでもダブルクォートでも記述できます。


# シングルクォートとダブルクォートどちらでもOK
product = "キーボード"

print(f"{product}は便利なアイテムです。")   # ダブルクォート
print(f'{product}は便利なアイテムです。')   # シングルクォート

# 出力結果:キーボードは便利なアイテムです。
# 出力結果:キーボードは便利なアイテムです。

プロジェクトやチームのコーディングスタイルに合わせて統一して使うのがよいでしょう。

複数行のf文字列を書く方法

長い文字列を複数行に渡って書きたい場合は、トリプルクォートと組み合わせることができます。


# 複数行のf文字列
name = "ドラゴンフルーツ"
color = "ピンク"
taste = "甘酸っぱい"

description = f"""
{name}の特徴:
  色:{color}
  味:{taste}
"""
print(description)

# 出力結果:
# ドラゴンフルーツの特徴:
#   色:ピンク
#   味:甘酸っぱい

トリプルクォートを使うことで、改行を含む長い文字列もそのまま記述できます。レポートやメッセージの整形に役立つパターンです。

f文字列で式展開と計算を行う方法

続いては、f文字列の{}の中で式を展開したり、計算を行ったりする方法を確認していきます。

f文字列の{}には変数だけでなく、Pythonの式であれば何でも記述できます。四則演算、関数呼び出し、三項演算子など、柔軟な使い方が可能です。

計算式を直接埋め込む方法

{}の中に計算式をそのまま書くと、結果が展開されます。


# 計算式を埋め込む
weight = 3.5  # サーモンの重さ(kg)
price_per_kg = 1200

print(f"サーモン{weight}kgの合計金額は{weight * price_per_kg}円です。")

# 出力結果:サーモン3.5kgの合計金額は4200.0円です。

変数に代入してから使う必要がなく、そのまま式を書けるのでコードがすっきりします。

関数やメソッドを呼び出す方法

{}の中で関数やメソッドを直接呼び出すことも可能です。


# 関数・メソッドの呼び出し
animal = "gorilla"
items = ["ネジ", "ボルト", "ワッシャー"]

print(f"動物名(大文字):{animal.upper()}")
print(f"アイテム数:{len(items)}個")
print(f"最初のアイテム:{items[0]}")

# 出力結果:動物名(大文字):GORILLA
# 出力結果:アイテム数:3個
# 出力結果:最初のアイテム:ネジ

文字列メソッドのupper()やlower()、len()などの組み込み関数もそのまま使えます。

三項演算子を使った条件分岐

{}の中で三項演算子を使うと、条件によって埋め込む値を切り替えることができます。


# 三項演算子との組み合わせ
score = 75

result = f"スコア{score}点:{'合格' if score >= 60 else '不合格'}"
print(result)

# 出力結果:スコア75点:合格

if-elseの三項演算子を{}の中に記述することで、シンプルな条件分岐をインラインで表現できます。複雑な分岐には適しませんが、簡単な判定には便利でしょう。

f文字列でフォーマット指定をする方法

続いては、f文字列でより細かい表示フォーマットを指定する方法を確認していきます。

f文字列では、{}の中でコロン「:」に続けてフォーマット指定子を記述することで、小数点の桁数・ゼロ埋め・整列・カンマ区切りなど、様々な表示形式を制御できます。

フォーマット指定 書き方 内容
小数点桁数指定 {変数:.2f} 小数点以下2桁で表示
ゼロ埋め {変数:05d} 5桁になるようゼロで埋める
カンマ区切り {変数:,} 3桁ごとにカンマを挿入
左揃え {変数:<10} 10文字幅で左揃え
右揃え {変数:>10} 10文字幅で右揃え
パーセント表示 {変数:.1%} パーセント形式で表示

小数点のフォーマットを指定する方法

数値の小数点以下の桁数を揃えたい場合は、:.nfの形式を使います。


# 小数点フォーマット
pi = 3.141592653589793

print(f"円周率(2桁):{pi:.2f}")
print(f"円周率(4桁):{pi:.4f}")

weight = 1.5
print(f"アボカドの重さ:{weight:.3f}kg")

# 出力結果:円周率(2桁):3.14
# 出力結果:円周率(4桁):3.1416
# 出力結果:アボカドの重さ:1.500kg

:.2fのように「.(桁数)f」と指定するだけで、表示桁数を統一できます。数値を扱う場面では特によく使われるフォーマットです。

カンマ区切りとゼロ埋めの使い方

大きな数値の可読性を高めるカンマ区切りや、コード番号などに使うゼロ埋めも簡単に指定できます。


# カンマ区切りとゼロ埋め
revenue = 12345678
item_id = 42

print(f"売上金額:{revenue:,}円")
print(f"商品ID:{item_id:06d}")

# 出力結果:売上金額:12,345,678円
# 出力結果:商品ID:000042

カンマ区切りは「:,」、ゼロ埋めは「:0(桁数)d」と指定します。データを見やすく整形するときに重宝するでしょう。

文字列の整列と幅指定をする方法

テーブル形式で出力したいときなど、文字列の幅を揃えて整列させることもできます。


# 文字列の整列
products = [("ネジ", 50), ("ボルト", 120), ("キーボード", 8500)]

for name, price in products:
    print(f"{name:<10} : {price:>6}円")

# 出力結果:ネジ         :     50円
# 出力結果:ボルト       :    120円
# 出力結果:キーボード   :   8500円

左揃えは「:<(幅)」、右揃えは「:>(幅)」で指定します。リストや商品一覧を整形して出力するときに非常に便利なパターンです。

f文字列の応用テクニックと注意点

続いては、f文字列をより実践的に使いこなすための応用テクニックと、使用時の注意点を確認していきます。

基本的な使い方をマスターしたら、デバッグに役立つ=演算子や、ネストされた波括弧の使い方なども知っておくとコーディングがより快適になります。

デバッグに便利な「=」を使う方法

Python 3.8以降では、f文字列の{}の中に「=」を加えると、変数名と値を同時に出力できます。


# デバッグ用の = 表記(Python 3.8以降)
temperature = 36.5
humidity = 78

print(f"{temperature=}")
print(f"{humidity=}")

x = 10
y = 20
print(f"{x + y = }")

# 出力結果:temperature=36.5
# 出力結果:humidity=78
# 出力結果:x + y = 30

変数名と値が一緒に出力されるため、デバッグ時にどの変数がどの値かを確認しやすくなります。print文を使ったデバッグをよく行う方には特に便利でしょう。

f文字列の中で波括弧を表示する方法

f文字列の中で「{」「}」という文字自体を表示したい場合は、二重にして「{{」「}}」と記述します。


# 波括弧を文字として表示する
key = "color"
value = "red"

print(f"辞書の例:{{{key}: {value}}}")
print(f"フォーマット:{{変数名}}")

# 出力結果:辞書の例:{color: red}
# 出力結果:フォーマット:{変数名}

JSONやコードのサンプルを含む文字列を生成するときなど、波括弧をエスケープする方法として覚えておきましょう。

f文字列使用時の注意点

f文字列を使う上でいくつか注意すべき点があります。


# 注意点1:バックスラッシュは{}の中に使えない(Python 3.11以前)
fruits = ["アボカド", "ドラゴンフルーツ"]
separator = ", "
result = f"フルーツ:{separator.join(fruits)}"
print(result)

# 注意点2:同じクォートを{}の中で使うと構文エラーになる
name = "サーモン"
# print(f"{"name"}")  # エラーになる
print(f"{name!r}")    # repr形式で出力する場合

# 出力結果:フルーツ:アボカド, ドラゴンフルーツ
# 出力結果:'サーモン'

Python 3.12以降ではこれらの制限が緩和されていますが、幅広い環境での動作を考慮するなら、複雑な処理は変数に切り出してから埋め込む方が安全です。

まとめ

この記事では、Pythonのf文字列(フォーマット済み文字列リテラル)について、基本的な書き方から式展開・フォーマット指定・応用テクニックまで幅広く解説しました。

f文字列は「fを先頭につけて{}の中に変数や式を書く」というシンプルな構文で、%演算子やformat()メソッドと比べてコードが短く読みやすくなります。小数点の桁数指定やカンマ区切り、文字列の整列なども「:」に続けて指定するだけで簡単に実現できます。

Python 3.8以降のデバッグ用「=」表記や、波括弧を文字として表示する「{{}}」の書き方など、実践的なテクニックも合わせて活用してみてください。

f文字列はPython 3.6以降の現代的なPythonコードでは標準的な文字列フォーマットの方法です。変数埋め込み・式展開・フォーマット指定をシンプルな構文で実現できるf-stringを、ぜひ日常のコーディングに取り入れましょう。

今回紹介したサンプルコードを実際に動かしながら、f文字列の使い方をしっかり身につけてみてください。