如何在 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