Pythonで変数の値を文章に入れて表示したいときに便利なのが、「f文字列(f-string)」です。文字列の前に f を付け、{} の中に変数を書くだけで、その値が文字列に入ります。Python 3.6で追加され、今はPythonのコードでよく使われる書き方です。
C言語の printf("%d円", price); では、書式と変数を別の場所に書きますが、f文字列では変数を入れたい場所にそのまま書けます。桁数やゼロ埋めの指定も printf と似ているので、C言語を書いてきた人にはなじみやすいと思います。この記事では、基本の書き方とよく使う書式、バージョンによる違いをまとめます。
f文字列の基本
lang = "Python"
version = "3.12"
# + でつなぐ書き方(数値は str() で文字列にする必要がある)
print("言語は" + lang + "で、バージョンは" + version + "です。")
# format() を使う書き方
print("言語は{}で、バージョンは{}です。".format(lang, version))
# f文字列
print(f"言語は{lang}で、バージョンは{version}です。")3つとも同じ表示になります。f文字列は、どの変数がどこに入るかがそのまま読めるのが良いところです。f は大文字の F でも構いません。
JavaScriptのテンプレートリテラル(バッククォートと ${})と同じ考え方です。JavaScriptでの書き方は「文字列のクォートの違いとテンプレートリテラル」で紹介しています。
{} の中には式も書ける
{} の中には、変数だけでなく計算式や関数の呼び出しも書けます。
price = 1000
items = ["りんご", "みかん", "ぶどう"]
print(f"税込みは {int(price * 1.1)} 円です。") # 税込みは 1100 円です。
print(f"商品は {len(items)} 個あります。") # 商品は 3 個あります。ただし、長い計算を {} の中に書くと読みにくくなるので、先に変数に入れてから埋め込むほうが分かりやすいこともあります。
よく使う書式の指定
{変数:書式} のように、:(コロン)のあとに書式を書くと、表示の仕方を指定できます。
| 書き方 | 意味 | 結果の例 |
|---|---|---|
{pi:.2f} | 小数点以下2桁 | 3.14 |
{sales:,} | 3桁ごとにカンマ | 1,500,000 |
{num:05} | 5桁になるようにゼロ埋め | 00012 |
{rate:.1%} | パーセント表示(100倍して % を付ける) | 25.6% |
{word:>6} | 6文字分の幅で右寄せ | abc(左に空白) |
{word:<6} | 6文字分の幅で左寄せ | abc (右に空白) |
{word:^7} | 7文字分の幅で中央寄せ | abc |
{today:%Y-%m-%d} | 日付を指定した形で表示 | 2026-10-09 |
from datetime import date
pi = 3.14159265
sales = 1500000
rate = 0.256
today = date(2026, 10, 9)
print(f"円周率:{pi:.2f}") # 円周率:3.14
print(f"売上:{sales:,}円") # 売上:1,500,000円
print(f"ID:{12:05}") # ID:00012
print(f"達成率:{rate:.1%}") # 達成率:25.6%
print(f"日付:{today:%Y年%m月%d日}") # 日付:2026年10月09日
# 表のように桁をそろえて表示する
for item, yen in [("りんご", 120), ("ぶどう", 1500)]:
print(f"{item:<4}{yen:>6,}円")桁をそろえる指定は、文字数で幅を数えます。日本語のような全角文字は表示すると幅が広いので、英数字と混ぜると列がずれることがあります。
小数の計算結果を整えて表示する
Pythonの小数は2進数で扱われるので、計算結果にわずかな誤差が出ることがあります。表示するときは、桁数を指定すると見やすくなります。C言語の double と同じです。
total = 0.1 + 0.2
print(total) # 0.30000000000000004
print(f"{total:.2f}") # 0.30表示を整えても、変数の中の値は変わらないことに注意してください。
デバッグに便利な {変数=}(Python 3.8以降)
{変数=} と書くと、「変数名=値」の形で表示されます。値を確かめるために print を入れるときに便利です。書式と組み合わせることもできます。
user_id = 4953
pi = 3.14159
name = "taro"
print(f"{user_id=}") # user_id=4953
print(f"{pi=:.2f}") # pi=3.14
print(f"{name=}") # name='taro'(文字列は ' ' 付きで表示される)文字列が 'taro' のようにクォート付きで表示されるのは、値を確かめるための表示(repr)になるからです。普通の {name} でも、{name!r} と書くと同じ表示になります。空白が混ざっていないかを確かめるときに役立ちます。
Python 3.12で変わったこと:{} の中のクォート
Python 3.11までは、f文字列の外側と同じクォートを {} の中で使うと、エラーになっていました。Python 3.12からは、同じクォートも使えるようになっています。
employee = {"name": "山田", "dept": "開発部"}
# Python 3.12以降で動く(3.11までは SyntaxError)
print(f"担当者は{employee["name"]}です。")
# どのバージョンでも動く書き方(中と外でクォートを変える)
print(f"担当者は{employee['name']}です。")他の人が使うパソコンやサーバーで動かすコードは、中と外でクォートを変えておくと安心です。
使っているPythonのバージョンを確かめる
上のように、f文字列はバージョンによって使える書き方が違います。使っているPythonのバージョンは、次のコマンドで確かめられます。
python3 --version自分のパソコンでは新しいバージョンでも、サーバーでは古いバージョンが動いていることがあります。たとえばAlmaLinux 9では、標準の python3 は3.9系です。そのままだと Python 3.12 の書き方はエラーになるので、動かす場所のバージョンに合わせて書きます。
波カッコそのものを表示したいとき
f文字列の中で { や } を文字として表示したいときは、{{ と }} のように2つ重ねます。
key = "name"
print(f"{{{key}}}") # {name}まとめ
- 文字列の前に
fを付け、{}の中に変数や式を書くと、その値が入る :のあとに書式を書くと、桁数(.2f)、カンマ(,)、ゼロ埋め(05)、寄せ(><^)などを指定できる{変数=}はデバッグに便利(Python 3.8以降){}の中で外側と同じクォートが使えるのは Python 3.12以降。動かす場所のバージョンをpython3 --versionで確かめる
リストやタプルの中身を表示するときにも、f文字列を使うと分かりやすくなります。リストやタプルの違いは「リスト・タプル・セットの違い」で紹介しています。



コメント