Pythonで文字列の中に変数の値などを埋め込む際、Python 3.6以降では f-string が主流になりつつありますが、テンプレートとして文字列を分離して管理する場合や、古いバージョンのPythonコードを読み解く場合には、format() メソッドの理解が不可欠です。
format() メソッドは、文字列内の 置換フィールド({}) を、引数として渡された値で置き換えます。
この記事では、{}(中括弧)の使い方に応じた3つの引数指定パターンについて解説します。
1. 中括弧単体 {} (位置引数による置換)
最もシンプルな方法は、{} をそのまま記述することです。format() メソッドに渡された引数が、左から順番にそのまま埋め込まれます。
# テンプレート文字列の定義
# {} が出現する順序に従って値が置換される
message_template = "受付番号: {}, 待合室: {}"
# formatメソッドで値を流し込む
# 1つ目の {} に 105、2つ目の {} に "A会議室" が入る
formatted_text = message_template.format(105, "A会議室")
print(formatted_text)
実行結果:
受付番号: 105, 待合室: A会議室
引数の数と {} の数が合わない場合(引数が足りない場合)はエラーになりますが、引数が多い場合は余分なものが無視されます。
2. フィールド番号 {0} (インデックスによる指定)
{} の中に数字(インデックス)を記述すると、format() に渡された引数の何番目を使うかを明示的に指定できます。
これにより、引数の順番を入れ替えたり、同じ値を複数回使用したりすることが可能になります。
# 日付のフォーマット例
# 引数の順番: 0=日, 1=月, 2=年
date_template = "{2}年{1}月{0}日"
# 引数は (25, 12, 2025) の順で渡す
formatted_date = date_template.format(25, 12, 2025)
print(formatted_date)
# 同じ値を複数回使う例
# 引数0 を2回使用している
winner_template = "{0}選手 vs {1}選手 -> 勝者: {0}選手"
result_text = winner_template.format("TeamRed", "TeamBlue")
print(result_text)
実行結果:
2025年12月25日
TeamRed選手 vs TeamBlue選手 -> 勝者: TeamRed選手
{0} は最初の引数、{1} は2番目の引数を指します。
3. フィールド名 {name} (キーワード引数による指定)
{} の中に名前(識別子)を記述し、format() メソッド側で キーワード引数(名前=値) として値を渡す方法です。
コードの可読性が最も高くなるため、埋め込む値が多い場合や、テンプレートが複雑な場合に推奨されます。
# サーバーの設定情報を表示するテンプレート
# 何の値が入るかが直感的に分かりやすい
config_template = "Host: {host}, Port: {port}, Status: {status}"
# キーワード引数を使って値を指定する
server_info = config_template.format(
host="192.168.1.10",
status="Active",
port=8080 # 引数の順番が変わっても問題ない
)
print(server_info)
実行結果:
Host: 192.168.1.10, Port: 8080, Status: Active
まとめ
format() メソッドには、状況に応じて3つの使い分けがあります。
{}: 単純に左から順に埋め込む場合。{0}: 引数の順番を入れ替えたり、再利用したりする場合。{key}: どの値が入るかを明確にし、可読性を高めたい場合。
これらを使いこなすことで、柔軟な文字列操作が可能になります。
