我知道理论上大整数中的数字可以按数千个分组,以提高可读性:
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
作为千位分隔符?
答案 0 :(得分:2)
pl_PL
区域设置千位分隔符似乎是empty。我不知道这是否准确地代表了波兰的常见用法,但Python根据pl_PL
语言环境的规则正确格式化了您的号码。这可能是区域设置文件中的错误。
据我所知,没有选项可以手动指定千位分隔符和十进制标记字符。