2017-08-03 84 views
2

我有一个浮点数myfloat = 0.002我想用空格填充' '打印而不是尾随零。Python打印浮动填充空格而不是零

比方说,我想打印myfloat与空格填充右对齐到5个空格。为了清晰起见,我会在浮动后打印'|'

我想要什么: 0.002 |

什么填充印刷(我知道)给出:

>>> print(str(myfloat) + '|') # no padding, formatting 
0.002| 
>>> print('%.5f' % myfloat + '|') 
0.00200| 
>>> print('{0:<5f}|'.format(myfloat)) 
0.002000| 
>>> print('{0:.5f}|'.format(myfloat)) 
0.00200| 

我知道print('{0:<Xf}|'.format(myfloat))垫用空格之后X> 8左右。我不想要任何尾随零。

我在同一行上打印多个浮点数。它们具有不同的字符串长度,我希望它们与空格填充而不是零均匀对齐,所以静态填充字符串将不起作用。

举例来说,可以说,我想打印在两行myfloatlist1 = [0.01, 0.002, 0.0003, 0.00004]myfloatlist2 = [0.00004, 0.0003, 0.002, 0.01]内容,每一个具有相同间隔填充:

0.01  0.002 0.0003 0.00004 
0.00004 0.0003 0.002 0.01 

反正有没有用空格垫浮印(无需转换浮动到一个字符串或东西)?如果您需要更多白

|

打印( 'STR(myfloat).ljust(6,'“)+'):

+0

你尝试过在python'zfill'? – warl0ck

+0

@ warl0ck“string.zfill(s,width):在左边填充一个数字字符串**,数字为零**直到达到给定的宽度,以符号开头的字符串被正确处理。我不是在寻找零填充。 – Alnitak

+0

你可能想看看模块prettytable或pypi上的PTable。 – Gribouillis

回答

4

这是怎么回事?

>>> '{0: <8}|'.format(str(myfloat)) 
'0.002 |' 

编辑:下面胆的评论,这足以

>>> '{0: <8}|'.format(myfloat) 
'0.002 |' 
+3

这感觉就像是正确的路要走。但是''str''调用并不需要。 – Gall

+0

不错。没有意识到浮点转换标志'f'影响了填充。 – Alnitak

-1

你可以简单地做

myfloat = 0.002 
pads = ' '*4 # 4 is the number of trailing spaces I am adding. Change accordingly 
marker = '|' 
print(str(myfloat)+pads+marker) #0.002 | 
+0

我不认为一个静态填充变量会在这里工作:[ – Alnitak

1

试试这个空格只需将6改为任何你想要的。