Pythonのf-stringで文字列をきれいに表示する方法

python icon
Python

こんにちは、とまだです。

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 を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。

著者の詳細を見る →