Zenn
🌙

Pythonで文字列のフォーマットに値を動的に埋め込む

2024/10/29に公開

はじめに

Pythonで作成した文字列フォーマットの中に変数の値を埋め込む処理を複数の方法で実装していきます。

環境

  • Python 3.12

1. f-strings

変数名をそのまま記述できてシンプルかつ可読性が高いです。

name = "太郎"
age = 10
print(f"私の名前は{name}です。{age}歳です。")
# 出力: 私の名前は太郎です。10歳です。

print(f"来年は{age + 1}歳になります。")
# 出力: 来年は11歳になります。

fruits = {'name': 'りんご', 'price': 200}
print(f"この{fruits['name']}{fruits['price']}円です。")
# 出力: このりんごは200円です。

2. format()メソッド

format()メソッドの引数が順に文字列フォーマットに埋め込まれます。

2-1. 基本的なパターン

name = "太郎"
age = 10
message = "私の名前は{}です。{}歳です。"
print(message.format(name, age))
# 出力: 私の名前は太郎です。10歳です。

2-2. 名前付きプレースホルダー

format()メソッドの引数に名前を付けて、順序を気にせず指定します。

name = "太郎"
age = 10
message = "私の名前は{n}です。{a}歳です。"
print(message.format(n=name, a=age))
# 出力: 私の名前は太郎です。10歳です。

2-3. インデックス指定の順序引数

順序引数を指定して位置を明示的に指定します。

name = "太郎"
age = 10
message = "私の名前は{0}です。{1}歳です。"
print(message.format(name, age))
# 出力: 私の名前は太郎です。10歳です。

2-4. 名前付きプレースホルダーと順序引数の併用

2-2 の方法と 2-3 の方法の両方を組み合わせた方法です。

message = "この{0}は、{price}円です。{0}の産地は{place}です。"
print(message.format("みかん", price=300, place="XXX"))
# 出力: このみかんは、300円です。みかんの産地はXXXです。

参考

https://docs.python.org/ja/3/tutorial/inputoutput.html#formatted-string-literals

Discussion

ログインするとコメントできます