Pythonで文字列をフォーマット(format, f文字列 (Python 3.6以降), %演算子)
この記事では、Pythonにおける文字列のフォーマット方法について解説します。formatメソッド、f文字列リテラル、%演算子の3つの方法を例を用いて説明します。それぞれの方法の長所と短所、使い分けについても触れます。
目次
formatメソッド
formatメソッドは、{}プレースホルダーを使用して値を文字列に埋め込む方法です。
name = "Alice"
age = 30
print("私の名前は{}です。年齢は{}歳です。".format(name, age))
print("私の名前は{0}です。年齢は{1}歳です。".format(name, age))
print("私の名前は{1}です。年齢は{0}歳です。".format(age, name))
プレースホルダーの位置は、formatメソッドの引数の順番によって決まります。インデックスを指定することで、順番を入れ替えることも可能です。
data = {"name":"Bob", "age":25}
print("私の名前は{name}です。年齢は{age}歳です。".format(**data))
f文字列リテラル
f文字列リテラル(Python 3.6以降)は、文字列の前にfを付けることで、{}の中に直接変数名を書くことができます。
name = "Charlie"
age = 20
print(f"私の名前は{name}です。年齢は{age}歳です。")
print(f"私の名前は{name}です。来年は{age + 1}歳になります。")
f文字列リテラルは、可読性が高く、複雑な式も簡単に埋め込めます。
%演算子
%演算子は、古い方法ですが、まだ使用されています。%sは文字列、%dは整数、%fは浮動小数点数など、フォーマット指定子が使用されます。
name = "David"
age = 35
print("私の名前は%sです。年齢は%d歳です。" % (name, age))
%演算子は、可読性が低く、複雑な式を埋め込むのが難しいです。新しいコードでは、formatメソッドやf文字列リテラルの使用が推奨されます。
どの方法を使うべきか?
一般的には、f文字列リテラルが最も推奨されます。可読性が高く、シンプルで強力です。formatメソッドも柔軟性があり、多くの場合に利用できます。%演算子は、古いコードとの互換性が必要な場合を除いて、避けるべきです。
関連記事
- Pythonで文字列を分割(split, rsplit, splitlines)
- Pythonで文字列を検索(find, rfind, index, rindex)
- Pythonで文字列を中央寄せ・左寄せ・右寄せ(center, ljust, rjust)
- Pythonで文字列を結合(join, +演算子)
- Pythonで文字列を置換(replace, translate, re.sub)
- Pythonで文字列の大文字・小文字を変換(upper, lower, capitalize, title, swapcase)
- Pythonで文字列の先頭・末尾の空白を削除(strip, lstrip, rstrip)
- Pythonで文字列の先頭と末尾が特定の文字列か判定(startswith, endswith)
- Pythonで文字列の出現回数をカウント(count)
- Pythonで文字列をスライスで部分抽出