如何在python中使用语言环境获取给定货币alpha-3代码名称的对应货币符号?
我在做:
import locale, re
def get_currency_symbol(alpha_3='USD'):
locales_all = locale.locale_alias.values()
for l in locales_all:
try:
try:
locale.setlocale(locale.LC_ALL, l)
except NameError:
l = re.sub('\..*$','.utf8',l) # On Linux the file are normally
# finished with '.utf8'.
locale.setlocale(locale.LC_ALL, l)
conv=locale.localeconv()
if conv['int_curr_symbol'] == alpha_3.upper():
return conv['currency_symbol']
except:
pass
return None
但是我在使用语言环境名称时遇到了问题:
locale.Error:不支持的语言环境设置
答案 0 :(得分:0)
setlocale()
的文档说,如果给定语言环境参数,则它应该是语言环境的名称或包含别名的两个部分的可迭代。
因此,请将获取语言环境的行更改为:
locales_all = locale.locale_alias.keys()
或将其设置为以下行:
locale.setlocale(locale.LC_ALL, l.split('_'))
(但是当然不要同时做这两者:))
第一种方法更好,第二种可能需要进一步完善才能与所有区域设置别名一起使用。
中的更多信息答案 1 :(得分:0)
您可以使用
locale.setlocale()
然后致电localeconv
In [10]: locale.localeconv()
Out[10]:
{'currency_symbol': '$',
'decimal_point': '.',
'frac_digits': 2,
'grouping': [3, 3, 0],
'int_curr_symbol': 'USD ',
'int_frac_digits': 2,
'mon_decimal_point': '.',
'mon_grouping': [3, 3, 0],
'mon_thousands_sep': ',',
'n_cs_precedes': 1,
'n_sep_by_space': 0,
'n_sign_posn': 1,
'negative_sign': '-',
'p_cs_precedes': 1,
'p_sep_by_space': 0,
'p_sign_posn': 1,
'positive_sign': '',
'thousands_sep': ','}