2017-08-08 3 views
0

新しいスタイルの書式( "PyFormat")を使用して一般的な変数を印刷しようとしています。文字列、float、boolまたは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]のいずれかです。

関連する問題