Pythonのf-stringで文字列をきれいに表示する方法
こんにちは、とまだです。
Pythonで変数の値を表示するとき、 文字列の中にうまく埋め込めずに困ったことはありませんか?
たとえば名前と年齢を一緒に表示したいとき。
文字列を+
でつなげたり、format()
を使ったり。
どれも一長一短で迷いますよね。
今回はf-stringという機能について解説します。 これを使えば、文字列の中に変数を自然に埋め込めるんです。
f-stringとは?
f-stringは、文字列の前にf
を付ける書き方です。
料理のレシピでいうところの「◯◯さじの調味料」みたいに。
変数の部分だけ後から差し替えられる仕組みです。
基本の形はこうです。
name = "田中"
message = f"こんにちは、{name}さん"
print(message)
{name}
の部分に変数の値が入ります。
実行すると「こんにちは、田中さん」と表示されます。
従来の方法と何が違うのか
これまでの文字列結合には3つの方法がありました。
まず、+
演算子でつなげる方法。
次に、%
を使った古い書式指定。
そして、format()
メソッドを使う方法。
それぞれに特徴がありますが、 f-stringの良さは以下の点にあります。
- 見た目が自然で分かりやすい
- タイプする文字数が少ない
- 変数の順番を気にしなくていい
とくに初心者の方にとっては、 直感的に理解しやすい方法といえるでしょう。
基本的な使い方
f-stringの基本は、波括弧{}
に変数を入れるだけ。
実際のコードで見てみましょう。
変数を埋め込む
product = "りんご"
price = 150
print(f"{product}の値段は{price}円です")
このコードを実行すると、 「りんごの値段は150円です」と表示されます。
変数名をそのまま波括弧に入れるだけ。 とてもシンプルですよね。
計算式も埋め込める
変数だけでなく、計算式も書けます。 たとえば、こんな感じです。
apple = 3
orange = 5
print(f"合計は{apple + orange}個です")
{apple + orange}
の部分で計算が行われます。
結果として「合計は8個です」と表示されます。
関数の呼び出しも可能です。
numbers = [10, 20, 30]
print(f"最大値は{max(numbers)}です")
このように、Pythonの式なら何でも書けるんです。
実務での活用シーン
f-stringは、実際の開発でも大活躍します。 いくつかの活用例を見ていきましょう。
デバッグ時の変数確認
プログラムの動作を確認するとき。 変数の中身を見たい場面がよくあります。
def calculate_total(items):
print(f"処理開始: アイテム数={len(items)}")
total = sum(items)
print(f"計算結果: 合計={total}")
return total
このように書けば、処理の流れが一目で分かります。 どの時点で何が起きているか把握しやすいですね。
ユーザーへのメッセージ表示
アプリケーションでユーザーに情報を伝えるとき。 f-stringを使えば、動的なメッセージが簡単に作れます。
user_name = input("お名前を入力してください: ")
points = 1500
print(f"{user_name}様の現在のポイントは{points}です")
ユーザー名とポイント数が自動で埋め込まれます。 テンプレートのような使い方ができるわけです。
レポートやログの生成
定期的なレポートを作る場合も便利です。 日付や数値を埋め込んで、自動生成できます。
from datetime import date
today = date.today()
sales = 125000
print(f"{today}の売上: {sales:,}円")
このコードでは、カンマ区切りの表示も実現しています。 次のセクションで詳しく解説しますね。
書式指定で表示を整える
f-stringには、表示形式を細かく指定する機能があります。 数値や文字列を見やすく整形できるんです。
数値にカンマを付ける
大きな数字は、カンマがあると読みやすいですよね。 f-stringなら簡単に実現できます。
population = 13960000
print(f"東京都の人口: {population:,}人")
:,
を付けるだけで、カンマ区切りになります。
「東京都の人口: 13,960,000人」と表示されます。
小数点以下の桁数を指定
金額や割合を表示するとき。 小数点以下の桁数を揃えたい場合があります。
rate = 0.12345
print(f"利率: {rate:.2%}")
.2%
で、パーセント表示の小数点以下2桁になります。
結果は「利率: 12.35%」です。
普通の小数なら、こう書きます。
weight = 65.789
print(f"体重: {weight:.1f}kg")
.1f
で小数点以下1桁。
「体重: 65.8kg」と表示されます。
文字列の位置揃え
表形式で出力するとき。 文字の位置を揃えたいことがあります。
item1 = "コーヒー"
item2 = "紅茶"
print(f"|{item1:<10}|{item2:>10}|")
<
で左揃え、>
で右揃えです。
10文字分の幅を確保しています。
結果はこんな感じになります。
|コーヒー | 紅茶|
ゼロ埋め
IDや管理番号など、桁数を揃えたいとき。 ゼロで埋める方法もあります。
order_id = 42
print(f"注文番号: {order_id:05}")
05
で5桁のゼロ埋めです。
「注文番号: 00042」となります。
応用的な使い方
基本を押さえたら、さらに便利な使い方も。 いくつか紹介していきます。
条件による表示切り替え
条件によって表示を変えたいとき。 三項演算子と組み合わせられます。
score = 85
result = f"テスト結果: {'合格' if score >= 80 else '不合格'}"
print(result)
80点以上なら「合格」、それ以外は「不合格」。 条件分岐がコンパクトに書けます。
辞書やリストの値を使う
データ構造から値を取り出す場合も簡単です。
user = {"name": "山田", "age": 25}
print(f"{user['name']}さんは{user['age']}歳です")
辞書のキーを指定して値を取得。 そのまま文字列に埋め込めます。
リストの場合はこうです。
fruits = ["りんご", "みかん", "ぶどう"]
print(f"1番目の果物は{fruits[0]}です")
インデックスを指定して要素を取得します。
日付と時刻のフォーマット
日時を見やすく表示したいとき。 f-stringなら書式指定が簡単です。
from datetime import datetime
now = datetime.now()
print(f"現在: {now:%Y年%m月%d日 %H時%M分}")
%Y
で年、%m
で月、という具合に指定します。
「現在: 2025年02月16日 15時30分」のように表示されます。
注意点とコツ
便利なf-stringですが、いくつか注意点があります。 知っておくと、トラブルを避けられます。
クオートの使い分け
文字列を囲む記号には注意が必要です。 シングルクオートとダブルクオートの混在は避けましょう。
# エラーになる例
# message = f'It's {weather} today'
# 正しい例
message = f"It's {weather} today"
外側をダブルクオートにすれば、 中でシングルクオートが使えます。
波括弧を表示したいとき
{}
自体を表示したい場合はどうするか。
二重にすればOKです。
print(f"波括弧はこう書きます: {{}}")
{{
と}}
で、波括弧が表示されます。
複雑な式は避ける
波括弧の中が複雑になりすぎると読みづらくなります。 そんなときは、事前に変数に入れましょう。
# 読みづらい例
# print(f"結果: {sum([x**2 for x in range(10) if x % 2 == 0])}")
# 改善例
even_squares = sum([x**2 for x in range(10) if x % 2 == 0])
print(f"結果: {even_squares}")
コードの可読性を保つことが大切です。
他の方法との比較
Pythonには他にも文字列フォーマットの方法があります。 それぞれの特徴を見てみましょう。
%演算子(古い方法)
C言語由来の書き方です。 今でも使われることがあります。
name = "鈴木"
age = 30
message = "名前: %s, 年齢: %d" % (name, age)
型を指定する必要があり、やや面倒です。 順番を間違えやすいのも欠点ですね。
format()メソッド
f-string登場前の主流でした。
name = "佐藤"
age = 28
message = "名前: {}, 年齢: {}".format(name, age)
f-stringより文字数が多くなります。 でも、古いPythonでも動くのが利点です。
使い分けの基準
現在の開発なら、f-stringが第一選択です。 理由は以下の通りです。
- コードが短くて読みやすい
- 直感的で学習しやすい
- パフォーマンスも良好
ただし、Python 3.5以前では使えません。
そんな環境ではformat()
を使いましょう。
よくある質問
f-stringについてよく聞かれる質問をまとめました。 参考にしてください。
Q: f-stringはいつから使える?
A: Python 3.6以降で使用可能です。 それ以前のバージョンでは動きません。
Q: 速度は速いの?
A: はい、他の方法より高速です。 文字列の生成が効率的に行われます。
Q: 複数行の文字列でも使える?
A: もちろん使えます。 三重クオートと組み合わせることも可能です。
name = "田中"
message = f"""
こんにちは、{name}さん。
今日もよい一日を!
"""
Q: エラーが出たときは?
A: よくある原因は以下の通りです。
- Pythonのバージョンが古い
- クオートの使い方が間違っている
- 波括弧の閉じ忘れ
エラーメッセージをよく読んで対処しましょう。
まとめ
f-stringは、Pythonの文字列処理を劇的に改善する機能です。 変数や式を自然に埋め込めるので、コードが読みやすくなります。
今回学んだポイントを振り返りましょう。
- 文字列の前に
f
を付けて、{}
で変数を埋め込む - 計算式や関数呼び出しも可能
- 書式指定で表示を整えられる
- 実務でのデバッグやメッセージ表示に便利
- Python 3.6以降で使用可能
最初は波括弧の使い方に戸惑うかもしれません。 でも、何度か使ううちに手に馴染んでくるはずです。
ぜひ実際にコードを書いて試してみてください。
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →