Pythonのf文字列(フォーマット済み文字列リテラル)の使い方をサンプルコード付で解説・format()との違い【初心者向け】

Python

Pythonの f文字列(フォーマット済み文字列リテラル/f-strings)は、Python 3.6から導入された文字列フォーマットの方法です。

文字列の中に変数や式を埋め込んで書くことができ、簡潔で読みやすいコードが書けるのが特徴です。

今回は、初心者の方向けに分かりやすくf文字列の使い方を解説します。

【はじめに】文字列のフォーマットとは

はじめに、そもそも文字列のフォーマットとはどのようなものかを簡単に解説します。

文字列のフォーマットとは!?

文字列を特定の形式で整形したり、オブジェクトの値を文字列に変換したりすること
(ゼロ埋め、小数点の桁数指定、日付形式の指定など)

上記の例では、文字列内の{}にformat()メソッドを使って値を埋め込んでいます。

Pythonのf文字列とは

Pythonの f文字列(フォーマット済み文字列リテラル/f-strings)は、Python 3.6から導入された文字列のフォーマット機能です。

従来は、fotmat()メソッドを用いて文字列をフォーマットすることが一般的でしたが、f文字列はformat()よりも簡単な記述で行えるようになっています。

Pythonのf文字列の使い方

Pythonのf文字列の使い方は以下の通りです。

【使用例1】変数の値を {} に代入する

name = "相葉"
age = 41
print(f"私は{name}です。{age}歳です。")
# 出力: 私は相葉です。41歳です。

変数名を {}の中に記述すると、その場所に変数の値が入ります。print文を見ても、どこに何を出力するのか一目で分かって便利ですね。

【使用例2】式(計算結果)を埋め込む

x = 5
y = 10
print(f" {x} と {y} の合計は {x + y} です。")
# 出力: 5 と 10 の合計は 15 です。

計算式を直接埋め込むことができるため、デバッグした際の見やすさも各段に向上します。

【使用例3】数値のフォーマット指定(小数点の桁数など)

value = 123.456789
print(f"小数点2桁まで表示した値: {value:.2f}")
# 出力: 小数点2桁まで表示した値: 123.46

上記の例は、小数点の桁数を2桁までにフォーマットした例です。

【使用例4】文字列の右寄せ・左寄せ・中央寄せ

name = "Hello"
print(f"結果:{name:>10}")    # 幅10で右寄せ
print(f"結果:{name:<10}")    # 幅10で左寄せ
print(f"結果:{name:^10}")    # 幅10で中央寄せ 
# 出力:
結果:     Hello
結果:Hello     
結果:  Hello  
  • 右寄せ:幅10の中で文字列”Hello”が右寄せされ、左側に5つの空白が追加されます。
  • 左寄せ:幅10の中で文字列"Hello"が左寄せされ、右側に5つの空白がされます。
  • 中央寄せ:幅10の中で文字列"Hello"が中央寄せされ、左右に空白が均等に配置されています(左右に2つずつ空白)

【使用例5】0埋め(ゼロパディング)

number = 42
print(f"{結果:03d}")  # 幅3でゼロ埋め。
print(f"{結果:05d}")  # 幅5でゼロ埋め。d:整数(Decimal ※省略可)
# 出力: 結果: 042
        結果: 00042

dは整数(Decimal )を表し、省略可能です。

f"{数値:0N}"  # Nは桁数

のように指定します。

【使用例6】条件式の埋め込み(三項演算子)

  • 基本的な使い方
age = 20
print(f"私は{'大人です' if age >= 18 else '未成年です'}。")
# 出力: 私は大人です。
  • リストが空かどうかを判定
items = []
print(f"リストは {'空' if not items else '空でない'}です。")
# 出力: リストは空です。

【使用例7】関数の結果を埋め込む

def greet(name):
    return name.upper()

name = "二宮"
print(f"こんにちは、{greet(name)}さん!")
# 出力:こんにちは、二宮さん!

関数を呼び出して、その結果を埋め込むことができます。

【使用例8】数値を2進数・8進数・16進数で表示

数値を2進数・8進数・16進数で表示することも可能です。

# 数値
num = 255

# 10進数で表示
print(f"10進数: {num}")

# 2進数で表示
print(f"2進数: {num:b}")

# 8進数で表示
print(f"8進数: {num:o}")

# 16進数で表示(小文字)
print(f"16進数: {num:x}")
# 出力:
10進数: 255
2進数: 11111111
8進数: 377
16進数: ff

16進数の出力結果を大文字で表示したい場合は、

print(f"16進数: {num:X}")

と、xを大文字にします。

【使用例9】数値のパーセント表示

数値をパーセンテージ形式で表示できます。

value = 0.75
print(f"パーセント表示: {value:.1%}")
# 出力: パーセント表示: 75.0%

{value:.n%} の値を変更することで、表示する桁数を変更することも可能です。

value = 0.75

# 小数点以下0桁
print(f"パーセント表示(小数点以下0桁): {value:.0%}")

# 小数点以下2桁
print(f"パーセント表示(小数点以下2桁): {value:.2%}")

# 1未満の数値
small_value = 0.0075
print(f"パーセント表示(1未満の数値): {small_value:.2%}")
# 出力
パーセント表示(小数点以下0桁): 75%
パーセント表示(小数点以下2桁): 75.00%
パーセント表示(1未満の数値): 0.75%

【使用例10】リストや辞書(Dictionary)の使用

リストや辞書を使って、動的に内容を変えたいときにも便利です。

  • リストの例
names = ["相葉", "松本", "二宮"]
for name in names:
    print(f"こんにちは、{name}さん!")
# 出力:
# こんにちは、相葉さん!
# こんにちは、松本さん!
# こんにちは、二宮さん!
  • 辞書(Dictionary/dict)の例
data = {"name": "相葉", "age": 41}

# fフォーマットを使って辞書の値を表示
print(f"私は{data['name']}という名前で、{data['age']}歳です。")
# 出力:
私は相葉という名前で、41歳です。

【使用例11】日付のフォーマット

日付や時間もf文字列を使って表示できます。

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

# 1. 年月日を表示
print(f"今日は{now.year}年{now.month}月{now.day}日です。")

# 2. 時刻を表示(時:分:秒)
print(f"現在の時刻は{now.hour}時{now.minute}分{now.second}秒です。")

# 3. フルフォーマットの日付と時刻
print(f"現在の日時: {now:%Y-%m-%d %H:%M:%S}")

# 4. 12時間表記(AM/PMを含む)
print(f"12時間表記: {now:%Y-%m-%d %I:%M:%S %p}")

# 5. 日付だけをカスタム形式で表示
print(f"日付(カスタム形式): {now:%d/%m/%Y}")

# 6. 時刻だけをカスタム形式で表示
print(f"時刻(カスタム形式): {now:%H:%M}")
# 出力:
今日は2024年11月26日です。
現在の時刻は14時35分50秒です。
現在の日時: 2024-11-26 14:35:50
12時間表記: 2024-11-26 02:35:50 PM
日付(カスタム形式): 26/11/2024
時刻(カスタム形式): 14:35

【使用例12】=指定子で変数名と値を同時に出力(デバッグに便利!)

この機能は、Python 3.8以降で使えます。

  • =指定子 を使わない場合
【 =指定子 を使わない場合】
name = "相葉"
age = 41
print(f"私は{name}です。{age}歳です。")
# 出力: 私は相葉です。41歳です。
  • =指定子 を使った場合
【 =指定子 を使った場合】
name = "相葉"
age = 41
print(f"{name=}, {age=}")
# 出力: name='相葉', age=41

=指定子を使うことで、出力時に変数名まで出力されます。

式の指定にも使えるのでデバッグに便利

また、変数だけでなく式の指定もでき、計算式の結果が表示されデバッグ時に便利です!

a = 10
b = 20

print(f"{a + b=}")
# 出力: a + b=30

fotmat()とf文字列の違い

【比較1】記述方法の違い

format()は、文字列の中に{}を置き、後から.format()で埋め込む値を指定します。
f-stringsは、文字列の前にfを付けて、{}の中に直接変数や式を書きます。

【比較2】書式指定の比較

例1:小数点以下の桁数の指定

  • format()
value = 123.456789
print("小数点2桁まで表示: {:.2f}".format(value))

#出力結果:小数点2桁まで表示: 123.46
  • f文字列
value = 123.456789
print(f"小数点2桁まで表示: {value:.2f}")

#出力結果:小数点2桁まで表示: 123.46

例2:0埋め(ゼロパディング)

  • format()
number = 42
print("0埋め後の値: {:05d}".format(number))

#出力結果:0埋め後の値: 00042
  • f文字列
number = 42
print(f"0埋め後の値: {number:05d}")

#出力結果:0埋め後の値: 00042

まとめ

本記事では、Pythonのf文字列(フォーマット済み文字列リテラル/f-strings)について、使い方やformat()の違いなどを解説しました。

従来のformat()よりも、コードの可読性が向上し、デバッグ時にもより楽でメンテナンス性も向上します。

是非、開発時に活用してみてください。

コメント

タイトルとURLをコピーしました