问题很简单,我有一个数字:例如。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)