[英]Get a currency symbol in locale
如何使用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: 不支持的區域設置
setlocale()
的文檔說,如果給定一個 locale 參數,它應該是 locale 的名稱或包含別名兩部分的迭代。 因此,要么將獲取語言環境的行更改為:
locales_all = locale.locale_alias.keys()
或更改將其設置為的行:
locale.setlocale(locale.LC_ALL, l.split('_'))
(但當然不要同時做:))
第一種方法更好,第二種方法可能需要更多改進才能使用所有語言環境別名。
文檔中的更多信息
您可以使用
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': ','}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.