2017-08-08 75 views
0

我試圖使用新樣式格式(「PyFormat」)和打印一般變量一個DateTime對象,它可能是一個字符串,浮點型,布爾或DateTime對象。 似乎罰款直接的格式:修剪新樣式格式

import datetime 
"{0}".format(datetime.datetime.now()) 

然而,試圖截斷{0:.300}混合時,它失敗:

import datetime 
"{0:.300}".format(datetime.datetime.now()) # returns '.300' 

它似乎字符串做工精細,花車,幾乎任何物體。但它不符合DateTime對象。

我該如何解決這個問題?我應該將每個變量轉換爲使用str()之前的字符串嗎?它看起來像打樣式格式本身的目的...

+0

不知道你想做什麼。你想截斷輸出爲300個字符? –

+0

是的。這是一個通用格式化程序,我可能使用的字符串很長。 – iTayb

+0

'str(x)[:300]''怎麼樣? –

回答

0

:之後的所有東西都作爲參數發送到對象的__format__方法。在這種情況下,這相當於撥打datetime.strftime。這也是爲什麼它的工作原理是strfloat。例如: -

>>> '{0:%-%m-%d}'.format(datetime.datetime.now()) 
'2017-12-31' 

你最好的選擇是要麼'{0:300}'.format(str(datetime.datetime.now()))或者乾脆str(datetime.datetime.now())[:300]