2017-08-03 124 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改爲任何你想要的。