Pythonのf文字列(フォーマット済み文字列リテラル)の使い方完全ガイド

 

Python 3.6で導入されたf文字列(f-string)は、文字列フォーマットの最も効率的で読みやすい方法です。従来のformat()メソッドや%演算子と比べて、シンプルで高速な文字列フォーマットを実現できます。この記事では、f文字列の基本から応用まで、実用的な例とともに詳しく解説します。

f文字列の基本構文

f文字列は文字列の前にfまたはFを付けて作成します。波括弧{}内に変数や式を直接記述できます。

name = "田中"
age = 28
print(f"私の名前は{name}で、年齢は{age}歳です")
# 私の名前は田中で、年齢は28歳です

式の埋め込み

f文字列では変数だけでなく、計算式やメソッドの実行結果も埋め込めます。

x = 10
y = 20
print(f"{x} + {y} = {x + y}")  # 10 + 20 = 30
print(f"大文字: {'hello'.upper()}")  # 大文字: HELLO

数値の書式指定

小数点以下の桁数指定

pi = 3.141592653589793
print(f"円周率: {pi:.2f}")  # 円周率: 3.14
print(f"円周率: {pi:.5f}")  # 円周率: 3.14159

ゼロ埋め

num = 42
print(f"ゼロ埋め: {num:05d}")  # ゼロ埋め: 00042
print(f"ゼロ埋め: {num:08d}")  # ゼロ埋め: 00000042

指数表記

large_num = 1234567.89
print(f"指数表記: {large_num:.2e}")  # 指数表記: 1.23e+06
print(f"指数表記: {large_num:.3E}")  # 指数表記: 1.235E+06

16進数・8進数・2進数

num = 255
print(f"16進数: {num:x}")  # 16進数: ff
print(f"16進数: {num:X}")  # 16進数: FF
print(f"8進数: {num:o}")   # 8進数: 377
print(f"2進数: {num:b}")   # 2進数: 11111111

パーセンテージとカンマ区切り

パーセンテージ表記

ratio = 0.875
print(f"成功率: {ratio:.1%}")  # 成功率: 87.5%
print(f"成功率: {ratio:.2%}")  # 成功率: 87.50%

3桁区切りのカンマ

price = 1234567
print(f"価格: {price:,}円")  # 価格: 1,234,567円
print(f"価格: {price:,.2f}円")  # 価格: 1,234,567.00円

文字列の配置とパディング

右寄せ・左寄せ・中央寄せ

text = "Python"
print(f"左寄せ: '{text:<10}'")   # 左寄せ: 'Python    '
print(f"右寄せ: '{text:>10}'")   # 右寄せ: '    Python'
print(f"中央: '{text:^10}'")     # 中央: '  Python  '

任意の文字でパディング

text = "Hello"
print(f"ゼロ埋め: '{text:0>10}'")  # ゼロ埋め: '00000Hello'
print(f"星埋め: '{text:*^10}'")    # 星埋め: '**Hello***'

辞書とオブジェクトの値参照

辞書の値を参照

person = {"name": "佐藤", "age": 35, "city": "東京"}
print(f"{person['name']}さんは{person['age']}歳、{person['city']}在住です")
# 佐藤さんは35歳、東京在住です

オブジェクトの属性参照

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person("鈴木", 40)
print(f"{p.name}さんの年齢は{p.age}歳です")
# 鈴木さんの年齢は40歳です

デバッグ用の便利な機能(Python 3.8+)

変数名と値を同時表示

x = 10
y = 20
print(f"{x=}, {y=}, {x+y=}")  # x=10, y=20, x+y=30

式と結果を同時表示

numbers = [1, 2, 3, 4, 5]
print(f"{len(numbers)=}")  # len(numbers)=5
print(f"{sum(numbers)=}")  # sum(numbers)=15

実用的な応用例

ログメッセージの生成

import datetime
level = "ERROR"
message = "ファイルが見つかりません"
timestamp = datetime.datetime.now()
log = f"[{timestamp:%Y-%m-%d %H:%M:%S}] {level}: {message}"
print(log)
# [2025-08-06 10:30:15] ERROR: ファイルが見つかりません

CSVファイルの行生成

data = [
    {"name": "山田", "score": 85, "grade": "B"},
    {"name": "田中", "score": 92, "grade": "A"},
]

for row in data:
    csv_line = f"{row['name']},{row['score']},{row['grade']}"
    print(csv_line)
# 山田,85,B
# 田中,92,A

URLの動的生成

base_url = "https://api.example.com"
user_id = 123
api_key = "abc123"
url = f"{base_url}/users/{user_id}?key={api_key}"
print(url)
# https://api.example.com/users/123?key=abc123

format()メソッドとの比較

# format()メソッド
name = "Python"
version = 3.9
msg1 = "{}のバージョンは{}です".format(name, version)

# f文字列
msg2 = f"{name}のバージョンは{version}です"

print(msg1)  # Pythonのバージョンは3.9です
print(msg2)  # Pythonのバージョンは3.9です

f文字列の方が読みやすく、実行速度も高速です。

まとめ

f文字列は現代的なPythonコードにおける標準的な文字列フォーマット方法です。直感的な構文、高いパフォーマンス、豊富な書式指定オプションにより、あらゆる場面で活用できます。

特にデバッグ時の変数表示、ログメッセージの生成、データの整形など、日常的なプログラミング作業において大幅な効率向上をもたらします。Python 3.6以上を使用している場合は、積極的にf文字列を活用することをお勧めします。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座