我们是否可以将多种格式应用于Python 3.x中的数字



问题很简单,我有一个数字:例如。x = 123.234

现在我想做的是: 1.更改为2个小数点:123.23; 2.在前面添加2个零:00123.45; 3.最后添加2 x-s: 00123.45xx; 4.如果我的x更改为 x = 1234.2345,则我的最终输出将为 01234.2345x

我知道如何用一些代码获取答案,但是我只想问,有没有办法,我可以将所有格式组合为1行,例如:

"{:.2f,0>A,x<B}".format(number)

其中a,b是您可以设置的一些值

然后它会给我一个字符串,尽管毫无意义,00123.45xx

如果要 pad 用零的数字到特定的长度:

'{:0>8.2f}'.format(123.234)  # 00123.23

如果您始终想添加2个零:

'00{:.2f}'

这也应该使如何应用两个尾随xxs:

'00{:.2f}xx'

具有可变精度,宽度和宽度后:

>>> "{:0>{prewidth}.{prec}f}{:x<{postwidth}s}".format(123.456, '', prec=2, prewidth=8, postwidth=2)
'00123.45xx'

或其变体。

另请参见pyformat页面。

>>> x = 123.456
>>> A = 5
>>> B = 2
>>> '{:0{}.{}f}'.format(x,A+B+1,B)+('X'*(str(x)[::-1].find('.')-B))
'00123.46X'
>>> x = 1234.5678
>>> A = 7
>>> B = 2
>>> '{:0{}.{}f}'.format(x,A+B+1,B)+('X'*(str(x)[::-1].find('.')-B))
'0001234.57XX'

上升:完全模块化。 A.前面的总数,B是不应是X的小数。其余的小数为X

当前我正在使用此代码:

x = 13.23456
k = "{:x<10s}".format("{:0>8.2f}".format(x))
print(k) #00013.23xx

,如果您更改x的长度,则结果的总长度保持不变,而仍然有0和x:

x = 123.23456
k = "{:x<10s}".format("{:0>8.2f}".format(x))
print(k) #00123.23xx

似乎我们没有办法将{:x&lt; 10s}和{:0> 8.2f}组合成一个:

#not possible: {:0>8.2f, x<10s}.format(x)

最新更新