1

如何通过从右侧开始的组中用 3 位数字分隔点来自动放置点?

例子:

in: 1234; out 1.234
in: 12345678; out 12.345.678
4

2 回答 2

9

您正在寻找千位分隔符。使用逗号作为千位分隔符的format()函数格式化您的数字,然后用点替换逗号:

>>> format(1234, ',').replace(',', '.') 
'1.234'
>>> format(12345678, ',').replace(',', '.') 
'12.345.678'

这里的','格式表示十进制数应该使用千位分隔符进行格式化(请参阅Format Specification Mini-language)。

使用该方法可以在更广泛的字符串格式中实现相同的目的str.format(),其中模板中的占位符被替换为值:

>>> 'Some label for the value: {:,}'.format(1234).replace(',', '.')
'Some label for the value: 1,234'

但是你也会冒着意外替换输出字符串中其他句号的风险!

您的另一个选择是使用依赖于区域设置的'n'格式,但这需要为您的机器配置一个设置正确LC_NUMERIC选项的区域设置。

于 2013-10-23T14:35:13.913 回答
5

这是一个简单的解决方案:

>>> a = 12345678
>>> "{:,}".format(a)
'12,345,678'
>>> "{:,}".format(a).replace(",", ".")
'12.345.678'
>>>

这使用.format字符串的方法来添加逗号分隔符,然后使用.replace将这些逗号更改为句点的方法。

于 2013-10-23T14:35:26.540 回答