如何在千位分隔符上强制使用点?

use*_*ser 4 python format locale number-formatting digit-separator

我已经看到很多问题教导如何使用comma千位分隔符来做到这一点:

>>> format(1123000,',d')
'1,123,000'
Run Code Online (Sandbox Code Playgroud)

但如果我尝试使用 a dot,它就会变得疯狂:

>>> format(1123000,'.d')
ValueError: Format specifier missing precision
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的Python内置独立于区域设置的方法可以使其输出'1.123.000'而不是输出'1,123,000'

我已经在“将‘小数点’千位分隔符添加到数字” 上找到了这个答案,但它是手动执行的。它可以更简单,因为format(1123000,'.d')语言环境无关吗?或者Python没有内置它?

@Eugene Yamash使用itertools可以给你更多的灵活性:

>>> from itertools import zip_longest
>>> num = "1000000"
>>> sep = "."
>>> places = 3
>>> args = [iter(num[::-1])] * places
>>> sep.join("".join(x) for x in zip_longest(*args, fillvalue=""))[::-1]
'1.000.000'
Run Code Online (Sandbox Code Playgroud)

Jam*_*mes 11

如果您只处理整数,您可以使用:

x = 123456789
'{:,}'.format(x).replace(',','.')
# returns
'123.456.789'
Run Code Online (Sandbox Code Playgroud)

  • 真的吗???????我使用 django 的 humanize 解决了我的问题(/sf/ask/24252721/),但这个解决方案听起来真的很奇怪...... (2认同)