🐍 Python

f-string(f"...") / str.format()

変数の値を文字列に埋め込んで組み立てる方法です。Python 3.6以降はf-string(f"...")が主流で、AIが生成するコードのほとんどもこの記法を使っています。古いコードや一部のライブラリではstr.format()も見かけるため、両方を読めるようにしておくと安心です。

構文: f"...{式}..."             # f-string(推奨)
      "...{}...".format(値)     # str.format()

f-stringの基本

fを先頭に付けた文字列の中で、{変数名}と書くとその値がそのまま埋め込まれます。

name = "takamax"
score = 95
print(f"{name}: {score}点")  # 'takamax: 95点'

書式指定で桁数やゼロ埋めを制御する

{値:書式}の形で書式指定を付けると、小数点の桁数やゼロ埋めを指定できます。.2fは小数点以下2桁、03dは3桁ゼロ埋めの整数という意味です。

pi = 3.14159265
print(f"{pi:.2f}")  # '3.14'

n = 7
print(f"{n:03d}")  # '007'

str.format():f-string以前の書き方

{}を並べておき、.format()の引数を順番に埋め込みます。{0}のように番号を指定すると、同じ値を複数箇所で使い回せます。

print("{}は{}歳です".format("Taro", 25))  # 'Taroは25歳です'
print("{0}-{1}-{0}".format("a", "b"))     # 'a-b-a'

さらに古い%記法

C言語のprintfに似た%を使う書き方も、古いコードやログ出力の一部にまだ残っています。読めるようにしておくと役立ちます。

print("%s: %d" % ("count", 42))  # 'count: 42'

デバッグに便利な{x=}記法(Python 3.8以降)

f-stringで{変数名=}と書くと、「変数名=値」の形で自動的に出力してくれます。デバッグ用のprint文をすばやく書きたいときに便利です。

x = 10
print(f"{x=}")  # 'x=10'
よく使う書式指定子
.2f
小数点以下2桁で表示(小数)
03d
3桁になるようゼロ埋めして表示(整数)
,
3桁ごとにカンマ区切りを入れる(例: f"{1234567:,}" → '1,234,567')
>10 / <10 / ^10
幅10で右寄せ / 左寄せ / 中央寄せ
💡 AIコードレビュー観点:新しく書くならf-string以外は疑ってよい

2020年代以降に生成されたPythonコードで、文字列連結を+で延々とつないでいたり、%記法や古い.format()が使われていたりする場合、それ自体は動きますが可読性の観点で見劣りします。特に"a" + str(n) + "b"のような+連結と数値の文字列変換が混在するコードは、f-string1行に書き直せることが多いです。

← Python str クイックリファレンス一覧へ戻る