如何在千位分隔符上强制加点?
How to force dot on thousands separator?
我已经看到很多问题教导如何使用 comma
作为千位分隔符:
>>> format(1123000,',d')
'1,123,000'
但是如果我尝试使用 dot
,它就会变得疯狂:
>>> format(1123000,'.d')
ValueError: Format specifier missing precision
是否有一种简单的Python内置独立于语言环境的方法使其输出'1.123.000'
而不是'1,123,000'
?
我已经在 Add 'decimal-mark' thousands separators to a number 上找到了这个答案
但它是手动完成的。 format(1123000,'.d')
和 locale independent 可以更简单吗?或者Python没有内置?
@Eugene Yarmash Using itertools
can give you some more flexibility:
>>> 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'
如果你只处理整数,你可以使用:
x = 123456789
'{:,}'.format(x).replace(',','.')
# returns
'123.456.789'
我已经看到很多问题教导如何使用 comma
作为千位分隔符:
>>> format(1123000,',d')
'1,123,000'
但是如果我尝试使用 dot
,它就会变得疯狂:
>>> format(1123000,'.d')
ValueError: Format specifier missing precision
是否有一种简单的Python内置独立于语言环境的方法使其输出'1.123.000'
而不是'1,123,000'
?
我已经在 Add 'decimal-mark' thousands separators to a number 上找到了这个答案
但它是手动完成的。 format(1123000,'.d')
和 locale independent 可以更简单吗?或者Python没有内置?
@Eugene Yarmash Using
itertools
can give you some more flexibility:>>> 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'
如果你只处理整数,你可以使用:
x = 123456789
'{:,}'.format(x).replace(',','.')
# returns
'123.456.789'