ホーム > python > tips > Pythonのフォーマット済み文字列リテラル(f-string、f文字列)

Pythonのフォーマット済み文字列リテラル(f-string、f文字列)

pythontips

フォーマット済み文字列リテラル(f-string、f文字列)について

Pythonではバージョン3.6よりフォーマット済み文字列リテラル(f-string)というものが追加されています。
接頭辞 'f' または 'F'を付けることで、文字列の中に変数や式などを組み込んで記載することが可能になります。
7.1.1. フォーマット済み文字列リテラル
2.4.3. フォーマット済み文字列リテラル

環境

今回動作の確認を行った際のバージョンは下記の通り
python:3.10.9
numpy:1.24.3


基本的な使い方

文字列に接頭辞 'f' または 'F'を付け、変数を{}で囲んで記載するだけです。
整数型など文字列以外の型や変数、式を使用したりすることが可能です。
{変数=}と記述することで、変数名も一緒に出力してくれます。

if __name__ == '__main__':
print(f'{1}{3}は奇数です')
# 1と3は奇数です
a = '奇数'
print(f'{1}{3}{a}です')
# 1と3は奇数です
x = 10
y = 20
print(f'{x}+{y}={x+y}')
# 10+20=30
print(f'{x=}{y=}の和は{x + y=}です')
# x=10とy=20の和はx + y=30です


書式設定

{}内でコロンを用いることで文字列の書式を指定することも可能です。

0埋め

if __name__ == '__main__':
for i in range(3):
print(f'{i:08}回目です')
# 00000000回目です
# 00000001回目です
# 00000002回目です

桁区切り

if __name__ == '__main__':
for i in range(3):
print(f'{i+1000:,}回目です')
# 1,000回目です
# 1,001回目です
# 1,002回目です

小数点以下の桁数指定

if __name__ == '__main__':
for i in range(1,3):
print(f'{i/100:.3f}回目です')
# 0.010回目です
# 0.020回目です

幅指定(自動、左寄せ、中央寄せ、右寄せ)

if __name__ == '__main__':
x = 10
y = 20
# 自動設定
print(f'{x=:5}{y=:10}の和は{x + y=}です')
# x= 10とy= 20の和はx + y=30です
# 左寄せ
print(f'{x=:<5}{y=:<10}の和は{x + y=}です')
# x=10 とy=20 の和はx + y=30です
# 中央寄せ
print(f'{x=:^5}{y=:^10}の和は{x + y=}です')
# x= 10 とy= 20 の和はx + y=30です
# 右寄せ
print(f'{x=:>5}{y=:>10}の和は{x + y=}です')
# x= 10とy= 20の和はx + y=30です