【发布时间】:2017-03-21 20:23:54
【问题描述】:
我知道理论上大整数中的数字可以按千分组以提高可读性:
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'
为什么数字没有格式化?我觉得这很奇怪。我希望像 1 234 567 890 这样的东西会被打印出来。
根据Format Specification Mini-Language,我们可以明确强制使用两种可能的分隔符:逗号, 和下划线_。遗憾的是,逗号不适用于波兰语,因为它在那里用作小数点分隔符,而像 1_234_567_890 这样的数字对于大多数人来说看起来很奇怪。
我们能否以某种方式强制将不间断空格 用作千位分隔符?
【问题讨论】:
-
解决方法:
"1_234_567_890".replace("_", '.')给你你想要的 -
locale.currency(var, symbol=False, grouping=True),因为pl_PL确实包含.货币值分隔符。 -
@Prune:提问者想要句号,而不是逗号。
-
@Prune 此外,我非常清楚如何设置逗号,我在帖子中提到过。
标签: python formatting integer locale