如何通过Python的locale模块获取国家对应货币及货币所属官方国家?
用Python实现国家与货币的双向查询
嘿,这个问题问得挺实用的!咱们来一步步拆解怎么用Python的locale模块(以及必要的补充工具)实现你要的两个功能。
一、获取指定国家对应的货币
Python的locale模块本身可以帮我们拿到对应地区的货币信息,但前提是你得知道目标国家对应的locale标识符(比如美国是en_US.UTF-8,德国是de_DE.UTF-8)。核心思路是通过locale.setlocale()切换到目标地区,再用locale.localeconv()提取货币代码和符号。
代码示例
import locale def get_country_currency(country_locale): try: # 切换到目标locale配置 locale.setlocale(locale.LC_ALL, country_locale) # 获取当前locale的格式参数 conv = locale.localeconv() return { '官方货币代码': conv['int_curr_symbol'].strip(), # 标准化货币代码,如USD、EUR '货币符号': conv['currency_symbol'] # 本地化符号,如$、€ } except locale.Error: return f"抱歉,找不到对应的locale配置:{country_locale}" # 测试用例 print(get_country_currency('en_US.UTF-8')) # 输出 {'官方货币代码': 'USD', '货币符号': '$'} print(get_country_currency('fr_FR.UTF-8')) # 输出 {'官方货币代码': 'EUR', '货币符号': '€'}
注意事项
- 不同操作系统的locale命名有差异:比如Windows上美国的locale是
English_US,而Linux/macOS是en_US.UTF-8,如果需要跨平台兼容,要么做名称映射,要么直接用第三方库简化。 - 如果系统未安装目标locale,会抛出
locale.Error,所以一定要加异常处理。
二、已知货币代码,查询使用它的国家
很遗憾,locale模块本身没有内置“货币代码→国家”的反向映射表——它只负责处理当前locale的格式逻辑,没法直接反向查询。这时候咱们可以用pycountry这个第三方库(专门维护ISO标准的国家、货币数据)来实现。
步骤1:安装pycountry
先通过pip安装依赖:
pip install pycountry
代码示例
import pycountry def get_countries_by_currency(currency_code): target_code = currency_code.upper() matching_countries = [] for country in pycountry.countries: try: if country.currency_code == target_code: matching_countries.append(country.name) except AttributeError: # 部分小型地区可能未记录货币代码,直接跳过 continue if matching_countries: return f"使用{target_code}作为官方货币的国家/地区:\n- " + "\n- ".join(matching_countries) else: return f"没有找到使用{target_code}作为官方货币的国家/地区" # 测试用例 print(get_countries_by_currency('USD')) print(get_countries_by_currency('EUR'))
补充说明
pycountry的数据直接对接ISO标准,准确性和覆盖性都很可靠,而且完全跨平台,比自己手动维护映射表省心多了。
内容的提问来源于stack exchange,提问作者hildogjr
相关产品推荐
相关产品推荐

