如何在 python 中格式化带有西班牙千位分组的数字?
How to format a number with spanish thousand grouping in python?
我需要用西班牙语千位分隔符(点而不是逗号)格式化数字。使用语言环境,我可以获得英语的分隔符:
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US')
'en_US'
>>> print(locale.format("%d", 10000000, grouping=True))
10,000,000
但是,如果我尝试获取西班牙语分隔符,它不起作用:
>>> locale.setlocale(locale.LC_ALL, 'es_ES')
'es_ES'
>>> print(locale.format("%d", 10000000, grouping=True))
10000000
关于如何获得预期结果的任何想法? (10.000.000)。我正在使用 python 3.4.
我在 Python 2.7(在 Windows)中尝试过,它似乎有效,但我的语言环境设置有点不同:
>>>locale.setlocale(locale.LC_ALL, 'esp_esp')
'Spanish_Spain.1252'
>>>print(locale.format('%d', 10000000, grouping=True))
10.000.000
您使用的是哪个 Python 版本? (这可能不是答案,但我无法使用评论......抱歉!)
我认为 es_ES
数字格式不包括千位分隔符。但是,货币格式确实如此:
In [16]: locale.setlocale(locale.LC_ALL, 'es_ES')
In [17]: print(locale.format('%d', 10000000, grouping=True, monetary=True))
10.000.000
您可以致电locale.localeconv()
获取更多信息:
In [18]: locale.localeconv()
Out[18]:
{'currency_symbol': 'Eu',
'decimal_point': ',',
'frac_digits': 2,
'grouping': [127],
'int_curr_symbol': 'EUR ',
'int_frac_digits': 2,
'mon_decimal_point': ',',
'mon_grouping': [3, 3, 0],
'mon_thousands_sep': '.', # <----- NB
'n_cs_precedes': 0,
'n_sep_by_space': 1,
'n_sign_posn': 1,
'negative_sign': '-',
'p_cs_precedes': 0,
'p_sep_by_space': 1,
'p_sign_posn': 1,
'positive_sign': '',
'thousands_sep': ''} # <----- NB
我需要用西班牙语千位分隔符(点而不是逗号)格式化数字。使用语言环境,我可以获得英语的分隔符:
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US')
'en_US'
>>> print(locale.format("%d", 10000000, grouping=True))
10,000,000
但是,如果我尝试获取西班牙语分隔符,它不起作用:
>>> locale.setlocale(locale.LC_ALL, 'es_ES')
'es_ES'
>>> print(locale.format("%d", 10000000, grouping=True))
10000000
关于如何获得预期结果的任何想法? (10.000.000)。我正在使用 python 3.4.
我在 Python 2.7(在 Windows)中尝试过,它似乎有效,但我的语言环境设置有点不同:
>>>locale.setlocale(locale.LC_ALL, 'esp_esp')
'Spanish_Spain.1252'
>>>print(locale.format('%d', 10000000, grouping=True))
10.000.000
您使用的是哪个 Python 版本? (这可能不是答案,但我无法使用评论......抱歉!)
我认为 es_ES
数字格式不包括千位分隔符。但是,货币格式确实如此:
In [16]: locale.setlocale(locale.LC_ALL, 'es_ES')
In [17]: print(locale.format('%d', 10000000, grouping=True, monetary=True))
10.000.000
您可以致电locale.localeconv()
获取更多信息:
In [18]: locale.localeconv()
Out[18]:
{'currency_symbol': 'Eu',
'decimal_point': ',',
'frac_digits': 2,
'grouping': [127],
'int_curr_symbol': 'EUR ',
'int_frac_digits': 2,
'mon_decimal_point': ',',
'mon_grouping': [3, 3, 0],
'mon_thousands_sep': '.', # <----- NB
'n_cs_precedes': 0,
'n_sep_by_space': 1,
'n_sign_posn': 1,
'negative_sign': '-',
'p_cs_precedes': 0,
'p_sep_by_space': 1,
'p_sign_posn': 1,
'positive_sign': '',
'thousands_sep': ''} # <----- NB