Pythonでプログラムを書いていると、文字列の中に変数の値を入れたり、数字をきれいに整えたりしたくなることがよくあります。
たとえば「こんにちは、太郎さん!」の「太郎」の部分を、プログラムで自動的に変えたいときなどです。
そんなときに使うのが「フォーマット文字列」という機能です。
でも、Pythonにはf""
や.format()
、%
記法など、いくつかの書き方があって、最初は「どれを使えばいいの?」と迷ってしまうかもしれません。
この記事では、Pythonのフォーマット文字列について、基本から応用まで具体例を使ってわかりやすく説明します。
フォーマット文字列とは何か?

どんなもの?
フォーマット文字列とは、文字列の中に変数や値を埋め込む方法のことです。
通常の文字列に、データを組み合わせて新しい文字列を作る技術だと考えてください。
なぜ必要なの?
プログラムでは、決まった形の文字列に、その時々で変わるデータを入れたいことがよくあります。
フォーマット文字列を使わない場合:
name = "太郎"
age = 25
# 文字列をつなげるのが大変
message = "こんにちは、" + name + "さん!あなたは" + str(age) + "歳ですね。"
print(message)
フォーマット文字列を使った場合:
name = "太郎"
age = 25
# すっきりと書ける
message = f"こんにちは、{name}さん!あなたは{age}歳ですね。"
print(message)
実際の例
「ユーザー登録が完了しました」というメッセージを表示するとき:
username = "yamada_taro"
email = "yamada@example.com"
# 登録完了メッセージ
print(f"{username}さん、ユーザー登録が完了しました!")
print(f"確認メールを {email} に送信しました。")
結果:
yamada_taroさん、ユーザー登録が完了しました!
確認メールを yamada@example.com に送信しました。
ここがポイント!
フォーマット文字列を使うと、文字列とデータを組み合わせるのがとても簡単になります。Pythonには3つの主な書き方があるので、次の章で詳しく見ていきましょう。
Pythonのフォーマット記法3種類
3つの書き方の概要
Pythonには、フォーマット文字列を書く方法が3つあります。
それぞれに特徴があるので、使い分けを覚えましょう。
書き方 | 特徴 | 使えるPythonのバージョン | おすすめ度 |
---|---|---|---|
f文字列 | 直感的で読みやすい、計算も埋め込める | 3.6以降 | ★★★ |
format関数 | 柔軟な書式設定ができる | 2.7以降 | ★★☆ |
%演算子 | 昔からある書き方で、シンプル | 全バージョン | ★☆☆ |
f文字列(おすすめ!)
f文字列は、文字列の前にf
をつけて、{}
の中に変数や式を書く方法です。Python 3.6以降で使えます。
name = "太郎"
age = 25
city = "東京"
# 基本的な使い方
print(f"こんにちは、{name}さん!")
# 複数の変数を使用
print(f"{name}さんは{age}歳で、{city}に住んでいます。")
# 計算も埋め込める
print(f"来年は{age + 1}歳になりますね。")
結果:
こんにちは、太郎さん!
太郎さんは25歳で、東京に住んでいます。
来年は26歳になりますね。
format関数
.format()
を使って値を埋め込む方法です。{}
に番号を指定することもできます。
name = "太郎"
age = 25
# 基本的な使い方
print("こんにちは、{}さん!".format(name))
# 複数の値を順番に埋め込み
print("{}さんは{}歳です。".format(name, age))
# 番号を指定して順番を変える
print("{1}歳の{0}さん".format(name, age))
# 名前をつけて埋め込み
print("こんにちは、{user_name}さん!".format(user_name=name))
結果:
こんにちは、太郎さん!
太郎さんは25歳です。
25歳の太郎さん
こんにちは、太郎さん!
%演算子
C言語のような書き方で、昔からある方法です。
name = "太郎"
age = 25
# 文字列の埋め込み(%s)
print("こんにちは、%sさん!" % name)
# 数値の埋め込み(%d)
print("%sさんは%d歳です。" % (name, age))
# 小数の埋め込み(%f)
height = 175.5
print("身長は%.1fcmです。" % height)
結果:
こんにちは、太郎さん!
太郎さんは25歳です。
身長は175.5cmです。
実際にはどれを使う?
初心者におすすめ:f文字列から始めましょう!読みやすくて直感的です。
使い分けの目安:
- 新しいプロジェクト:f文字列
- 古いPythonバージョン:format関数
- 既存コードの修正:元の書き方に合わせる
記法ごとのメリット・デメリット

それぞれの特徴を比較
書き方 | メリット | デメリット |
---|---|---|
f文字列 | ・読みやすい<br>・計算ができる<br>・高速 | ・Python 3.6未満では使えない |
format関数 | ・配列や辞書も扱いやすい<br>・柔軟な書式設定 | ・書き方がやや長くなる<br>・少し遅い |
%演算子 | ・シンプル<br>・古いバージョンでも使える | ・書式ミスが起きやすい<br>・機能が限定的 |
具体例で比較
同じ結果を出すのに、書き方がどう違うかを見てみましょう。
やりたいこと:価格を小数点第2位まで表示
price = 1234.567
# f文字列(おすすめ)
print(f"価格:{price:.2f}円")
# format関数
print("価格:{:.2f}円".format(price))
# %演算子
print("価格:%.2f円" % price)
すべて同じ結果:
価格:1234.57円
f文字列の便利な機能
f文字列なら、複雑な計算も簡単に埋め込めます:
width = 10
height = 15
# 計算結果を直接埋め込み
print(f"面積は{width * height}平方センチメートルです。")
# 関数の結果も埋め込める
items = ["りんご", "みかん", "ばなな"]
print(f"商品は全部で{len(items)}種類あります。")
# 条件式も使える
temperature = 25
print(f"今日は{'暖かい' if temperature > 20 else '寒い'}ですね。")
結果:
面積は150平方センチメートルです。
商品は全部で3種類あります。
今日は暖かいですね。
ここがポイント!
- 迷ったらf文字列:現代のPythonではf文字列が標準です
- 計算もできる:f文字列なら
{}
の中で計算や関数呼び出しができます - 読みやすさ重視:コードは書くよりも読む時間の方が長いので、読みやすさを優先しましょう
実務で使えるフォーマット応用テクニック
どんなことができる?
フォーマット文字列を使うと、数値の表示を整えたり、日付をきれいに表示したりできます。実際の仕事でよく使われるテクニックを紹介します。
数値のゼロ埋め
番号を3桁で表示したい場合:
# 連番でファイル名を作成
for i in range(1, 6):
filename = f"file_{i:03}.txt"
print(filename)
結果:
file_001.txt
file_002.txt
file_003.txt
file_004.txt
file_005.txt
書式の意味:
:03
は「3桁でゼロ埋め」という意味:05
なら5桁でゼロ埋めになります
数値の桁区切り
大きな数字を読みやすくする:
# 売上金額の表示
sales = 12345678
print(f"今月の売上:{sales:,}円")
# パーセント表示
rate = 0.1234
print(f"成功率:{rate:.1%}")
結果:
今月の売上:12,345,678円
成功率:12.3%
日付と時間の整形
import datetime
# 現在の日時を取得
now = datetime.datetime.now()
today = datetime.date.today()
# いろいろな形式で表示
print(f"今日の日付:{today:%Y年%m月%d日}")
print(f"現在時刻:{now:%H時%M分}")
print(f"英語形式:{today:%B %d, %Y}")
結果:
今日の日付:2025年06月06日
現在時刻:10時30分
英語形式:June 06, 2025
文字列の幅揃え
表のような整った表示を作る:
# 商品リストの表示
products = [
("りんご", 150),
("みかん", 100),
("ばなな", 200)
]
print("商品名 価格")
print("-" * 15)
for name, price in products:
print(f"{name:<8} {price:>5}円")
結果:
商品名 価格
---------------
りんご 150円
みかん 100円
ばなな 200円
書式の意味:
<8
:左寄せで8文字の幅>5
:右寄せで5文字の幅^10
:中央寄せで10文字の幅
小数点の桁数指定
# 計算結果をきれいに表示
pi = 3.141592653589793
print(f"円周率(小数点1桁):{pi:.1f}")
print(f"円周率(小数点3桁):{pi:.3f}")
print(f"円周率(小数点5桁):{pi:.5f}")
# 科学記法での表示
big_number = 123456789
print(f"科学記法:{big_number:.2e}")
結果:
円周率(小数点1桁):3.1
円周率(小数点3桁):3.142
円周率(小数点5桁):3.14159
科学記法:1.23e+08
実際の業務での活用例
ログファイルの生成:
import datetime
def write_log(level, message):
timestamp = datetime.datetime.now()
log_entry = f"[{timestamp:%Y-%m-%d %H:%M:%S}] {level:<5} {message}"
print(log_entry)
# 使用例
write_log("INFO", "プログラムを開始しました")
write_log("ERROR", "ファイルが見つかりません")
結果:
[2025-06-06 10:30:45] INFO プログラムを開始しました
[2025-06-06 10:30:46] ERROR ファイルが見つかりません
レポートの生成:
# 月次売上レポート
monthly_sales = [
("1月", 1200000),
("2月", 1350000),
("3月", 1100000)
]
print("=" * 30)
print(" 月次売上レポート")
print("=" * 30)
total = 0
for month, sales in monthly_sales:
print(f"{month:<4} {sales:>10,}円")
total += sales
print("-" * 30)
print(f"合計 {total:>10,}円")
結果:
==============================
月次売上レポート
==============================
1月 1,200,000円
2月 1,350,000円
3月 1,100,000円
------------------------------
合計 3,650,000円
ここがポイント!
- 見た目を整える:桁揃えや桁区切りで、数値が読みやすくなります
- 日付は統一:日付の表示形式を統一すると、プロっぽく見えます
- ログは重要:エラーの原因を探すとき、整ったログがあると助かります
まとめ
Pythonのフォーマット文字列は、プログラムの文字列操作をぐっと便利にしてくれる強力な機能です。3つの書き方がありますが、現在ではf文字列が最もおすすめです。
学習の進め方:
- まずはf文字列から:基本的な
f"{変数}"
の書き方を覚えましょう - 書式指定を学ぶ:小数点の桁数や桁揃えなど、よく使う書式を練習しましょう
- 実際に使ってみる:日付の表示やレポート作成など、実際の場面で使ってみましょう
- 他の記法も知る:古いコードを読むために、format関数や%演算子も理解しておきましょう
覚えておきたい書式:
{数値:.2f}
:小数点2桁まで表示{数値:,}
:3桁区切りで表示{文字列:<10}
:左寄せで10文字幅{日付:%Y年%m月%d日}
:日付を日本語形式で表示
コメント