基本の考え方
- f文字列は「式を埋め込む」仕組みで、書式指定子を使って数値を整形できます。
- ただし「ロケール依存の桁区切りや通貨記号」を完全に扱うには
localeモジュールや Babel などのライブラリを併用します。
f文字列でできること(ロケール非依存)
value = 1234567.89
print(f"{value:,}") # 1,234,567.89 (カンマ区切り固定)
print(f"{value:,.2f}") # 1,234,567.89 (小数2桁)
Python👉 これは「常にカンマ区切り」で、ロケールは考慮されません。
ロケール対応(標準ライブラリ locale)
import locale
# ロケールを設定(環境依存)
locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8')
value = 1234567.89
# ロケール依存の数値フォーマット
print(f"{value:n}") # 1,234,567.89 (ロケールに応じた区切り)
# 通貨表記
print(locale.currency(value, grouping=True)) # ¥1,234,567
Python⚠️ 注意点
setlocaleは プロセス全体に影響するため、並列処理のあるアプリでは注意。- OS によってロケール名が違う(Windows では
'Japanese_Japan.932'など)。
実務でおすすめ(外部ライブラリ Babel)
Babel を使うと、ロケールを明示的に指定でき、環境依存が少なくなります。
from babel.numbers import format_currency, format_decimal
value = 1234567.89
print(format_decimal(value, locale='ja_JP')) # 1,234,567.89
print(format_currency(value, 'JPY', locale='ja_JP')) # ¥1,234,568
print(format_currency(value, 'USD', locale='en_US')) # $1,234,567.89
Python👉 通貨記号の位置や小数点の扱いもロケールに従って自動調整されます。
✅ まとめ
- f文字列だけでは「カンマ区切り」や「小数桁数」まで。
- ロケール対応したいなら
localeモジュールか Babel を使う。 - 実務では Babel 推奨(環境依存が少なく、安全に多言語対応できる)。


