Python で文字列をフォーマットする方法 (f-strings と format)

Python での最高の文字列書式設定テクニックを学びましょう。最新の f-string、format()、およびパーセンテージの書式設定をコード例と比較します。

エディターでこのソリューションを試してください

概要

文字列のフォーマットは、メッセージ内の変数のレンダリング、ログの出力、コンソールのデバッグの出力、および Web ページの構築に日常的に必要です。 Python は長年にわたって文字列の書式設定を大幅に進化させ、動的なテキスト表現を安全かつ読みやすく構築するための複数のオプションを提供しています。

最新の Python (3.6 以降) では、標準的で最も一般的なアプローチは、f-string (フォーマットされた文字列リテラル) を使用したフォーマットです。文字列の前に「f」または「F」を付けると、Python 式または変数を中括弧「{}」内に直接埋め込むことができます。これらの式は実行時に評価されるため、f-string は古いフォーマット方法よりも高速になり、大幅に読みやすくなります。

古い Python コード ベースでは、`.format()` メソッドまたはパーセント `%` 書式設定が使用されている場合があります。まだサポートされていますが、新しいコードでは通常は推奨されません。 f-strings は強力なインライン書式指定子もサポートしており、小数精度 (例: `{value:.2f}`) の制御、テキストの位置合わせ、または日付の書式設定を文字列変数内で直接行うことができます。

コードと実行の出力

このスクリプトは、f-string を使用した動的テキスト ブロックの印刷、浮動小数点 float のフォーマット、および .format() の使用を示します。

name = "Alice"
age = 30
pi = 3.14159

# 1. Using modern f-strings (Recommended)
greeting_f = f"Hello, my name is {name} and I am {age} years old."
print("f-string:", greeting_f)

# 2. formatting floats (2 decimal places precision)
precision_f = f"Pi rounded: {pi:.2f}"
print(precision_f)

# 3. Using the older .format() method
greeting_format = "Hello, my name is {} and I am {}.".format(name, age)
print(".format():", greeting_format)
端子出力
f-string: Hello, my name is Alice and I am 30 years old.
Pi rounded: 3.14
.format(): Hello, my name is Alice and I am 30.

段階的な実装

  • 文字列リテラルの前に文字 f を付けます (例: f'Hello...')。
  • 文字列内の中括弧 {} の内側に変数または式を直接挿入します。
  • 中かっこ内の 10 進形式を処理するには、:.2f のような形式仕様を使用します。

よくある質問

f-string は .format() や % フォーマットよりも高速ですか?

はい、f-string は最適化されたバイトコード操作として実行時に評価されるため、.format() 演算子や % 演算子よりも高速になります。

f 文字列内の関数を実行したり、式を評価したりできますか?

はい、有効な Python 式 (数学演算、関数呼び出し、辞書検索を含む) は中括弧内で評価できます。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。