Python | f文字列でのローカライズ(通貨記号や桁区切りのロケール対応)

Python Python
スポンサーリンク

基本の考え方

  • 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 推奨(環境依存が少なく、安全に多言語対応できる)。
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました