如何设置自定义千位分隔符?

时间:2017-03-21 20:23:55

标签: python formatting integer locale

我知道理论上大整数中的数字可以按数千个分组,以提高可读性:

getBlock(size_t x, size_t y)

然而,令人惊讶的是,这不适用于所有语言环境:

Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> locale.format('%d', 1234567890, grouping=True)
'1,234,567,890'
>>> "{:n}".format(1234567890)
'1,234,567,890'

为什么数字没有格式化?我觉得这很奇怪。我希望打印出像>>> locale.setlocale(locale.LC_ALL, 'pl_PL.UTF-8') 'pl_PL.UTF-8' >>> locale.format('%d', 1234567890, grouping=True) '1234567890' >>> "{:n}".format(1234567890) '1234567890' 这样的东西。

根据Format Specification Mini-Language,我们可以明确强制执行两个可能的分隔符:逗号1 234 567 890和下划线,。遗憾的是,逗号不适合波兰语,因为它在那里用作小数点分隔符,而像_这样的数字对于大多数人来说看起来很奇怪。

我们能否以某种方式强制使用不间断的空间1_234_567_890作为千位分隔符?

1 个答案:

答案 0 :(得分:2)

pl_PL区域设置千位分隔符似乎是empty。我不知道这是否准确地代表了波兰的常见用法,但Python根据pl_PL语言环境的规则正确格式化了您的号码。这可能是区域设置文件中的错误。

据我所知,没有选项可以手动指定千位分隔符和十进制标记字符。