You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django应用中通过ISO国家代码获取货币符号?

更简便的国家代码转货币符号方案

嘿,你的需求其实挺常见的,当前用pycountry+forex-python的方案是可行的,但确实可以简化步骤,甚至用单库搞定,我给你梳理几个更简便的方式:

方案1:优化现有库的使用流程

你当前的代码绕了个弯——通过国家的numeric代码去查货币,其实pycountry的国家对象本身就带了currencies属性,可以直接拿到对应货币的alpha-3代码,省去中间一步:

import pycountry
from forex_python.converter import CurrencyCodes

code = "US"
# 获取国家对象
country = pycountry.countries.get(alpha_2=code)
# 多数国家只有一种货币,直接取第一个元素
currency_alpha3 = country.currencies[0]
# 拿到货币符号
symbol = CurrencyCodes().get_symbol(currency_alpha3)
print(symbol)  # 输出 'US$'

这样代码更简洁,逻辑也更直接。

方案2:用单库搞定(推荐给已用国际化工具的Django项目)

如果你的Django项目已经在用babel做国际化(很多项目都会用),那直接用它的工具函数就能完成,不用额外依赖forex-python:

首先确保安装了babel:

pip install babel

然后代码:

from babel.numbers import get_currency_symbol
import pycountry

code = "US"
country = pycountry.countries.get(alpha_2=code)
currency_alpha3 = country.currencies[0]
# 默认返回本地习惯的符号,比如US对应'$'
symbol = get_currency_symbol(currency_alpha3)
# 如果想要带国家代码的格式(比如'US$'),可以自己拼接
symbol_with_code = f"{code}${symbol}"
print(symbol)  # 输出 '$'
print(symbol_with_code)  # 输出 'US$'

方案3:用轻量专用库

如果不想依赖pycountry之外的大库,可以试试currency-symbols这个轻量工具,专门用来映射货币代码和符号:

安装:

pip install currency-symbols

代码:

from currency_symbols import CurrencySymbols
import pycountry

code = "US"
country = pycountry.countries.get(alpha_2=code)
currency_alpha3 = country.currencies[0]
symbol = CurrencySymbols.get_symbol(currency_alpha3)
print(symbol)  # 输出 '$'
# 同样,需要带国家代码的话自行拼接即可

小提醒

有些国家存在多种流通货币的情况(比如欧元区国家同时可能有本地货币),这时候你需要根据业务逻辑选择合适的货币(比如优先取官方货币),而不是直接取第一个元素哦。

内容的提问来源于stack exchange,提问作者Dawn T Cherian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:37:55