簡體   English   中英

在語言環境中獲取貨幣符號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM