格式化负固定长度字符串

时间:2016-09-27 21:01:58

标签: python

python中,我尝试将数字格式化为带有前导零的固定长度字符串,这可以这样做:

'{:0>10}'.format('10.0040')
'00010.0040'

我有一个负数,想要表达否定,我会得到这个:

'{:0>10}'.format('-10.0040')
'00-10.0040'

如果我想将字符串格式化为:

'-0010.0040'

我怎么能这样做?

我可以做一个if / then,但想知道格式是否会处理这个问题。

3 个答案:

答案 0 :(得分:5)

你的问题是你的“数字”被表示为一个字符串,所以python无法知道它是正面的还是负面的,因为它不知道它是一个数字。

>>> '{: 010.4f}'.format(10.0400)
' 0010.0400'
>>> '{: 010.4f}'.format(-10.0400)
'-0010.0400'

这填充0并具有固定的精度。它将使用space表示正数,-表示负数。

您可以使用格式化令牌的sign部分更改行为(例如+为正号,或只填写额外的0

答案 1 :(得分:4)

我不知道如何使用#if (NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0) #define NetCore #endif 。我可以建议改用str.zfill吗?

str.format

如果您在格式化之前可以转换为数字:

>>> '-10.0040'.zfill(10)
'-0010.0040'
>>> '10.0040'.zfill(10)
'00010.0040'

答案 2 :(得分:2)

如果您可以将字符串转换为浮点数,则可以执行以下操作:

>>> '{:0=10.4f}'.format(float('-10.0040'))
'-0010.0040'
>>> '{:0=10.4f}'.format(float('10.0040'))
'00010.0040'