2017-08-08 38 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]