文字列の中に変数や計算結果を埋め込みたいとき、Pythonでもっとも手軽で読みやすいのがf-string(フォーマット済み文字列リテラル)です。文字列の前にfを付け、{ }の中に変数や式を書くだけで、その値が文字列に差し込まれます。Python 3.6以降で使えます。
さらに、{ }の中で:のあとに書式を指定すると、3桁区切り・小数桁・ゼロ埋め・日付の整形などができます。format()メソッドや%演算子という古い書き方もありますが、今はf-stringが基本です。この記事では、実機のPythonで確認しながら、f-stringと書式指定を整理します。
- f-stringは
f"こんにちは{name}さん"。{ }に変数や式を書くと値が差し込まれます。 - 書式は
:のあとに指定します。3桁区切りは{x:,}、小数2桁は{x:.2f}です。 - 組み合わせて
{x:,.2f}、ゼロ埋め幅は{x:08.2f}のように書きます。 - 寄せは右
{x:>10}・左{x:<10}・中央{x:^10}です。 - 日付は
{d:%Y/%m/%d}、デバッグには{x=}(変数名と値を出す)が便利です。 - 古い
format()や%もありますが、読みやすく速いf-stringを基本にします。
文字列の連結は文字列を連結・結合する方法、埋め込む値の元になるリスト(list)の使い方や辞書(dict)の使い方もあわせて参考になります。
f-stringの基本(変数・式の埋め込み)
文字列の前にfを付け、{ }の中に変数や式を書きます。{ }の中は、ただの式として評価されます。
name = "山田"
age = 30
# 変数を埋め込む
f"{name}は{age}歳です" # 山田は30歳です
# 式も書ける
f"合計 {2 + 3 * 4}" # 合計 14
f"来年は{age + 1}歳" # 来年は31歳
# メソッドやインデックスも使える
f"{name.upper()}" # YAMADA
items = ["A", "B"]
f"最初は{items[0]}" # 最初はA
実機でも、f"{name}は{age}歳です"が山田は30歳です、f"合計 {2 + 3 * 4}"が合計 14になりました。{ }の中には、変数だけでなく計算式、メソッド呼び出し、リストのインデックスなど、式なら何でも書けます。
書式を指定する(:で桁区切り・小数)
{ }の中で:のあとに「書式指定」を書くと、数値の見た目を整えられます。よく使うのが、3桁区切りの,と、小数桁の.nfです。
price = 1234567
# 3桁区切り
f"{price:,}" # 1,234,567
# 小数2桁にそろえる
f"{3.14159:.2f}" # 3.14
# 3桁区切りと小数を組み合わせる
f"{1234567.891:,.2f}" # 1,234,567.89
# パーセント表示(×100して%を付ける)
f"{0.1234:.1%}" # 12.3%
実機でも、{price:,}が1,234,567、{3.14159:.2f}が3.14、{1234567.891:,.2f}が1,234,567.89になりました。金額表示なら:,.0f(3桁区切りで小数なし)、割合なら:.1%のように、用途に合わせて指定できます。
書式指定子の一覧
よく使う書式指定子をまとめます。すべて実機で確認した出力です。
| 書式 | 意味 | 出力例 |
|---|---|---|
{x:,} |
3桁区切り | 1,234,567 |
{x:.2f} |
小数2桁 | 3.14 |
{x:,.2f} |
3桁区切り+小数2桁 | 1,234,567.89 |
{x:08.2f} |
ゼロ埋めで幅8 | 00003.14 |
{x:>10} |
右寄せ・幅10 | (右に寄る) |
{x:^10} |
中央寄せ・幅10 | (中央に寄る) |
{x:+} |
符号を付ける | +5 / -5 |
{x:.1%} |
パーセント | 12.3% |
{x:x} |
16進数 | ff |
{d:%Y/%m/%d} |
日付 | 2026/03/09 |
幅と寄せ(ゼロ埋め・右寄せ・中央寄せ)
桁数をそろえて表のように整列させたいときは、幅と寄せを指定します。>が右寄せ、<が左寄せ、^が中央寄せ、数字の前の0がゼロ埋めです。
age = 30
f"[{age:>10}]" # [ 30](右寄せ・幅10)
f"[{age:<10}]" # [30 ](左寄せ)
f"[{age:^10}]" # [ 30 ](中央寄せ)
# ゼロ埋め(連番などに便利)
f"{7:03}" # 007(3桁にゼロ埋め)
f"{3.14:08.2f}" # 00003.14(幅8・小数2桁・ゼロ埋め)
# 埋める文字を指定(* で埋める)
f"{age:*^10}" # ****30****
実機でも、{age:>10}は右寄せ、{age:^10}は中央寄せになりました。{7:03}は007とゼロ埋めされます。連番ファイル名や、数値を縦にそろえた一覧表示に便利です。
日付のフォーマット
datetimeオブジェクトをf-stringに入れ、:のあとに日付の書式(%Yなど)を書くと、好きな形式に整えられます。
from datetime import datetime
d = datetime(2026, 3, 9, 14, 5)
f"{d:%Y/%m/%d}" # 2026/03/09
f"{d:%Y-%m-%d %H:%M}" # 2026-03-09 14:05
f"{d:%Y年%m月%d日}" # 2026年03月09日
# 現在日時を整形する
now = datetime.now()
f"{now:%Y%m%d_%H%M%S}" # 20260309_140530(ファイル名向け)
実機でも、{d:%Y/%m/%d %H:%M}が2026/03/09 14:05になりました。%Y(4桁年)、%m(月)、%d(日)、%H(24時間)、%M(分)、%S(秒)を組み合わせます。ファイル名に使うなら、区切りのない%Y%m%d_%H%M%Sが定番です。
デバッグに便利な {x=}
Python 3.8以降では、{変数=}と書くと、変数名と値の両方が出力されます。デバッグで「この変数が今いくつか」を確認するときに便利です。
age = 30
name = "山田"
# {変数=} で「変数名=値」が出る
f"{age=}" # age=30
f"{name=}" # name='山田'
# 式も書ける
f"{age * 2=}" # age * 2=60
# わざわざ "age =", age と書かなくてよい
print(f"{age=}, {name=}") # age=30, name='山田'
実機でも、f"{age=}"はage=30になりました。print("age =", age)のように書く必要がなく、print(f"{age=}")だけで変数名と値が出ます。デバッグのprintがぐっと楽になります。
format()と%演算子(古い書き方)
f-string以前は、format()メソッドや%演算子で文字列を組み立てていました。古いコードで見かけるため、読めるようにしておくとよいでしょう。
# format() メソッド
"{} は {} 円".format("りんご", 300) # りんご は 300 円
"{0} と {1}".format("A", "B") # A と B(番号で指定)
"{name}".format(name="山田") # 山田(名前で指定)
"{:,.2f}".format(1234.5) # 1,234.50(書式も同じ)
# % 演算子(さらに古い書き方)
"%s は %d 円" % ("みかん", 100) # みかん は 100 円
"%.2f" % 3.14159 # 3.14
# 同じ結果を f-string で(最も読みやすい)
price = 300
f"りんご は {price} 円" # りんご は 300 円
実機でも、format()と%はどちらも正しく動きましたが、変数を直接書けるf-stringがいちばん読みやすく、速度も優れています。新しく書くコードはf-stringを使い、format()や%は「古いコードを読むため」に覚えておけば十分です。
よくある失敗
文字列の前にfを付け忘れる
fが無いと、{name}がそのまま文字列として出ます。変数を埋め込むには、必ず先頭にfを付けます。
:の前後を間違える
書式は{値:書式}の順です。{:.2f x}のように順番を間違えるとエラーになります。値が先、:のあとが書式です。
f-stringの中で同じ引用符を使う(古いPython)
Python 3.11以前では、f"{d['key']}"のように、外側と内側で同じ引用符を使うとエラーになります。内側は別の引用符("と')を使うと安全です(3.12以降は同じでも可)。
3桁区切りや小数で書式を付け忘れる
数値をそのまま埋め込むと区切りは付きません。{x:,}や{x:.2f}のように書式を指定します。
古いformat()や%を新規コードで使う
新しいコードはf-stringが読みやすく速いです。format()や%は古いコードを読むためのもの、と考えるとよいでしょう。
よくある質問
f"{price:,}"で1,234,567になります。小数も付けるならf"{x:,.2f}"です。金額表示でよく使います。f"{x:.2f}"で小数2桁になります。.2fの2が桁数で、.0fなら小数なし(整数に丸め)です。3桁区切りと組み合わせて{x:,.2f}とも書けます。f"{n:03}"で007のように3桁にゼロ埋めできます。03の3が桁数です。連番ファイル名や整列表示に便利です。format()や%演算子は古い書き方で、既存コードを読むために覚えておけば十分です。print(f"{age=}")と書くとage=30のように変数名と値が出ます(Python 3.8以降)。print("age =", age)と書く手間が省け、デバッグが楽になります。まとめ
- f-stringは
f"{変数}"。{ }の中に変数や式を書くと値が差し込まれます。 - 書式は
:のあと。3桁区切り{x:,}、小数{x:.2f}、組み合わせ{x:,.2f}です。 - 幅と寄せは
{x:>10}(右)・{x:^10}(中央)・{x:03}(ゼロ埋め)です。 - 日付は
{d:%Y/%m/%d}、デバッグは{x=}が便利です。 format()や%もありますが、新規コードはf-stringを基本にします。
f-stringは、変数の埋め込みから数値・日付の整形まで、これ1つでこなせる便利な機能です。「{値:書式}の順」「3桁区切りは,、小数は.nf」を押さえれば、見やすい出力をすぐに作れるようになります。

