【Python】文字列フォーマットの選び方!F文字列、format()、%演算子を徹底比較

ALL

こんにちは、Tech Samuraiです!
Pythonでプログラミングをしていると、「文字列の中に、変数の値を埋め込みたい」という場面が必ず出てきます。例えば、ユーザーの名前や計算結果を、メッセージの一部として表示したい場合などです。

Pythonには、この「文字列フォーマット」を実現する方法がいくつか存在しますが、そのために「どの方法を使うのがベストなの?」と迷ったことはありませんか?

今回の記事では、Pythonにおける主要な3つの文字列フォーマット方法、① F文字列② `str.format()`メソッド③ `%`演算子を、それぞれの特徴と使い方、そして推奨度を比較しながら、徹底的に解説していきます。この記事を読めば、あなたはもう文字列の整形に迷うことはありません!


1. F文字列 (f-string):最もモダンで推奨される方法 ✨

Python 3.6から導入された、最も新しく、そして現在最も推奨されている方法です。文字列の前に小文字の f` または大文字の F` を付け、変数を波括弧 {}` で囲むだけで、簡単に値を埋め込めます。

特徴

  • シンプルで高い可読性: 変数を文字列の中に直接記述できるため、コードが非常に直感的で分かりやすいです。
  • 高速: 他の方法に比べて処理速度が速いという利点があります。
  • 柔軟性: 波括弧 {}` の中で、簡単な式(計算や関数呼び出しなど)を直接実行できます。

コード例

name = "Tech Samurai"
score = 85.5
rank = 1

# f文字列を使って、変数を直接埋め込む
message = f"{name}さんのスコアは{score:.1f}点です。順位は{rank}位でした。"
print(message)

# 波括弧の中で計算もできる
print(f"1 + 2 の答えは {1 + 2} です。")

実行結果:

Tech Samuraiさんのスコアは85.5点です。順位は1位でした。
1 + 2 の答えは 3 です。

ポイント: {score:.1f}` のように、波括弧内でコロン :` の後に書式を指定(ここでは小数点以下1桁表示)することも可能です。


2. `str.format()` メソッド:Python 3 の標準的な方法

F文字列が登場する前(Python 3.0〜3.5)の、標準的なフォーマット方法です。文字列の .format()` メソッドを使用します。

特徴

  • 位置指定: 文字列内のプレースホルダー {}` に、.format()`に渡した引数が順番に代入されます。
  • 名前指定: {name}`のようにプレースホルダー内に名前を付け、キーワード引数で値を渡すことも可能です。

コード例

product = "キーボード"
price = 6500

# 位置指定で埋め込む
message1 = "この製品は{}で、価格は{}円です。".format(product, price)
print(message1)

# 名前指定で埋め込む
message2 = "この製品は{p}で、価格は{pr}円です。".format(p=product, pr=price)
print(message2)

実行結果:

この製品はキーボードで、価格は6500円です。
この製品はキーボードで、価格は6500円です。

F文字列に比べると少し冗長ですが、テンプレート文字列を先に作っておき、後から値を適用するような場面では今でも使われます。


3. `%` 演算子(旧形式):非推奨 ⚠️

C言語のprintf`関数に似た書式で、Pythonの初期から存在する古い形式です。現在では、いくつかの欠点があるため、**新しいコードでの使用は非推奨**とされています。

特徴

  • 型指定子: 値の型に応じて、%s` (文字列), %d` (整数), %f` (浮動小数点数) といった、異なる記号を使い分ける必要があります。
  • 可読性の低さ: 変数と指定子の対応関係が分かりにくく、タプルで渡す変数の数がずれるとエラーになりやすいです。

コード例

item_count = 3
total_price = 12980

# %演算子を使用
message = "購入した商品の数は%d個で、合計金額は%.2f円です。" % (item_count, total_price)
print(message)

実行結果:

購入した商品の数は3個で、合計金額は12980.00円です。

古いライブラリやコードではまだ見かけることがあるので、読み方だけは知っておくと良いでしょう。


まとめと使い分け

3つの方法の特徴を一覧表にまとめました。

方法特徴推奨度
F文字列 (f"...")最も高速で、直感的。波括弧 {}` 内で式も実行可能。高(現在の標準)
str.format()Python 3.0以降の標準的な方法。位置または名前で指定。中(特定の場面で有効)
%` 演算子古い形式。型指定子(%s, %d など)を使用。低(非推奨)

結論として、Python 3.6以降の環境で新しいコードを書く際は、特別な理由がない限り、**常にF文字列 (f-string) を使う**のがベストプラクティスです。その圧倒的な読みやすさと柔軟性は、あなたのコーディングをより快適で、効率的なものにしてくれるでしょう。

コメント

タイトルとURLをコピーしました