Python 3における文字列フォーマットのメカニズムは、コードを書く際に非常に便利で強力なツールです。文字列を扱う場面では、データを表示するために変数を文字列に組み込んだり、表示形式を調整したりすることがよくあります。ここでは、Python 3で文字列のフォーマットを行うための様々な方法について、包括的に解説します。
1. 古典的な文字列連結 (String Concatenation)
最も基本的な方法は、+
演算子を使用して文字列を連結する方法です。これは、単純な文字列同士を結合するのに便利ですが、大量のデータを処理する際には効率が悪い場合があります。

pythonname = "John"
age = 30
greeting = "Hello, my name is " + name + " and I am " + str(age) + " years old."
print(greeting)
ここでは、name
と age
を文字列として結合しています。しかし、整数を文字列に変換するために str()
を使う必要があるため、コードが少し冗長になります。
2. %演算子を使ったフォーマット (旧式の方法)
Python 2から引き継がれた方法で、%
演算子を使って文字列をフォーマットすることができます。これも広く使われていましたが、可読性が低く、他の方法に比べてやや古典的な手法とされています。
pythonname = "John"
age = 30
greeting = "Hello, my name is %s and I am %d years old." % (name, age)
print(greeting)
ここでは、%s
は文字列に、%d
は整数に対応するプレースホルダとして使われます。この方法は、コードが簡潔である一方で、データ型の間違いがあるとエラーになるため注意が必要です。
3. str.format()
メソッド
Python 3では、str.format()
メソッドが登場し、文字列のフォーマットをより柔軟に、かつ可読性を高めて実現できるようになりました。この方法では、フォーマット指定子を {}
として使用し、引数を format()
メソッド内で指定します。
pythonname = "John"
age = 30
greeting = "Hello, my name is {} and I am {} years old.".format(name, age)
print(greeting)
{}
はプレースホルダとして使われ、format()
メソッド内で指定された変数の値が順番に挿入されます。特定の位置にデータを挿入することも可能です。
pythongreeting = "Hello, my name is {0} and I am {1} years old. {0} is a great name.".format(name, age)
print(greeting)
4. f-strings (フォーマット済み文字列リテラル)
Python 3.6以降、最も直感的で効率的な方法として、f-strings(フォーマット済み文字列リテラル)が導入されました。文字列の前に f
を置き、波括弧 {}
内に変数や式を直接埋め込むことができます。
pythonname = "John"
age = 30
greeting = f"Hello, my name is {name} and I am {age} years old."
print(greeting)
f-stringsは、コードが簡潔で読みやすく、パフォーマンスが優れているため、現在最も推奨される方法です。また、式も埋め込むことができるため、複雑な計算を直接文字列内で行うこともできます。
pythongreeting = f"Next year, I will be {age + 1} years old."
print(greeting)
5. 複雑なフォーマットの指定
文字列フォーマットでは、データ型だけでなく、表示の形式も指定することができます。例えば、浮動小数点数の桁数を制限したり、文字列の配置を調整したりすることが可能です。
数値のフォーマット
str.format()
やf-stringsを使って、数値の表示形式を指定できます。例えば、小数点以下の桁数を指定したり、通貨記号を追加したりすることができます。
pythonpi = 3.14159
formatted_pi = f"Value of pi: {pi:.2f}" # 小数点以下2桁
print(formatted_pi)
このコードでは、{pi:.2f}
によって、pi
の値が小数点以下2桁で表示されます。
整数の桁数やパディングの指定
整数に対しても、桁数を揃えたり、ゼロで埋めたりすることができます。
pythonnum = 42
formatted_num = f"Number: {num:05d}" # ゼロ埋めで5桁
print(formatted_num)
このコードでは、整数 42
が 00042
と表示されます。
6. パラメータ名を使ったフォーマット
str.format()
や f-strings では、位置引数だけでなく、キーワード引数を使ってフォーマットすることもできます。これにより、コードの可読性がさらに向上します。
pythongreeting = "Hello, {name}. You are {age} years old.".format(name="John", age=30)
print(greeting)
f-stringsでも同様に、キーワード引数を使ったフォーマットが可能です。
pythonname = "John"
age = 30
greeting = f"Hello, {name}. You are {age} years old."
print(greeting)
7. まとめ
Python 3で文字列をフォーマットする方法にはさまざまな選択肢があります。以下の方法が主に使用されます。
-
文字列連結:基本的な方法だが、複雑な文字列の結合には不向き。
-
%演算子:古典的な方法で、簡単だが可読性が低くなることがある。
-
str.format()
メソッド:柔軟で可読性が高い。 -
f-strings(Python 3.6以降):最も直感的でパフォーマンスに優れている。
文字列のフォーマットを適切に使い分けることで、コードをより簡潔で効率的に保つことができます。特にf-stringsはシンプルで高速であり、現在最も推奨される方法です。