【Python】文字列に変数を埋め込んで1つの文字列を生成する方法

この記事では、Pythonで文字列に変数を埋め込んで1つの文字列を生成する方法と、文字列のテンプレートを作成する方法について解説します。

これらの方法を使うことで、簡単に変数を含んだ動的な文字列を作成することができます。

目次から探す

文字列のフォーマット

文字列のフォーマットとは、変数や値を文字列に埋め込んで、1つの文字列を生成する方法です。

Pythonでは、いくつかの方法が提供されています。

以下では、代表的な3つの方法について解説します。

%演算子を使ったフォーマット

%演算子を使ったフォーマットは、古いバージョンのPythonでよく使われていた方法です。

以下のような形式で使用します。

name = "Alice"
age = 25
message = "私の名前は%sです。年齢は%d歳です。" % (name, age)
print(message)

上記のコードでは、%sは文字列を、%dは整数を表します。

%の後に続く変数は、%演算子の右側の括弧内に順番に指定します。

このようにすることで、nameageの値が文字列に埋め込まれ、messageには私の名前はAliceです。年齢は25歳です。という文字列が代入されます。

str.format()メソッドを使ったフォーマット

str.format()メソッドを使ったフォーマットは、Python 2.6以降で導入された新しい方法です。

以下のような形式で使用します。

name = "Alice"
age = 25
message = "私の名前は{}です。年齢は{}歳です。".format(name, age)
print(message)

上記のコードでは、{}が変数を表します。

format()メソッドの引数に順番に指定した変数が、{}の中に埋め込まれます。

messageには私の名前はAliceです。年齢は25歳です。という文字列が代入されます。

f文字列を使ったフォーマット

f文字列は、Python 3.6以降で導入された最新のフォーマット方法です。

以下のような形式で使用します。

name = "Alice"
age = 25
message = f"私の名前は{name}です。年齢は{age}歳です。"
print(message)

上記のコードでは、fを文字列の前に付けることで、変数を直接埋め込むことができます。

{}の中に変数を書くだけで、その値が文字列に埋め込まれます。

messageには私の名前はAliceです。年齢は25歳です。という文字列が代入されます。

これらの方法を使うことで、文字列に変数を埋め込んで1つの文字列を生成することができます。

使いやすさや可読性など、状況に応じて適切な方法を選んで利用しましょう。

文字列のテンプレート

文字列のテンプレートとは、あらかじめ定義されたテンプレートに変数を埋め込んで、動的な文字列を生成する方法です。

Pythonでは、string.TemplateクラスやJinja2ライブラリを使って文字列のテンプレートを作成することができます。

string.Templateクラスを使ったテンプレート

string.Templateクラスは、Python標準ライブラリに含まれているテンプレートエンジンです。

以下は、string.Templateクラスを使ったテンプレートの例です。

from string import Template

# テンプレートの定義
template = Template("私の名前は${n}です。${m}歳です。")
# 変数の値を埋め込んで文字列を生成
name = "山田太郎"
age = 25
result = template.substitute({"n":name, "m":age})
print(result)

上記のコードでは、string.Templateクラスsubstitute()メソッドを使って、テンプレート内の変数を実際の値で置換しています。

出力結果は以下の通りです。

私の名前は山田太郎です。25歳です。

Jinja2ライブラリを使ったテンプレート

Jinja2は、Pythonの人気のあるテンプレートエンジンの1つです。

Jinja2を使うと、より高度なテンプレート処理を行うことができます。

以下は、Jinja2ライブラリを使ったテンプレートの例です。

from jinja2 import Template
# テンプレートの定義
template = Template("私の名前は{{ name }}です。{{ age }}歳です。")
# 変数の値を埋め込んで文字列を生成
name = "山田太郎"
age = 25
result = template.render(name=name, age=age)
print(result)

上記のコードでは、Jinja2ライブラリのTemplateクラスrender()メソッドを使って、テンプレート内の変数を実際の値で置換しています。

出力結果は以下の通りです。

私の名前は山田太郎です。25歳です。

Jinja2は、より複雑なテンプレート処理や条件分岐、ループ処理などもサポートしていますので、柔軟なテンプレートの作成が可能です。

以上が、Pythonで文字列のテンプレートを作成する方法です。

string.TemplateクラスやJinja2ライブラリを使うことで、変数を埋め込んだ動的な文字列を簡単に生成することができます。

目次から探す