我试图使用新的格式(" PyFormat")并打印一般变量,它可能是字符串,浮点数,布尔值或DateTime
对象。
对于直接格式化似乎很好:
import datetime
"{0}".format(datetime.datetime.now())
但是,当尝试混合截断{0:.300}
时,它会失败:
import datetime
"{0:.300}".format(datetime.datetime.now()) # returns '.300'
它似乎适用于字符串,浮点数和几乎任何对象。但它没有DateTime
obejcts。
我该如何解决这个问题?我应该先使用str()
将每个变量转换为字符串吗?它似乎胜过了格式本身的目的...
答案 0 :(得分:0)
将:
之后的所有内容作为参数发送到对象的__format__
方法。在这种情况下,它相当于调用datetime.strftime
。这也是它适用于str
和float
的原因。 E.g:
>>> '{0:%-%m-%d}'.format(datetime.datetime.now())
'2017-12-31'
您最好的选择是'{0:300}'.format(str(datetime.datetime.now()))
或str(datetime.datetime.now())[:300]
。