Python 2.7 では、文字列形式のテンプレートを使用して datetime オブジェクトを出力したいと考えています。何らかの理由で、左揃え/右揃えを使用すると、文字列が正しく出力されません。
import datetime
dt = datetime.datetime(2013, 6, 26, 9, 0)
l = [dt, dt]
template = "{0:>25} {1:>25}" # right justify
print template.format(*l) #print items in the list using template
これにより、次の結果が得られます。
>25 >25
それ以外の
2013-06-26 09:00:00 2013-06-26 09:00:00
文字列形式のテンプレートを使用して datetime オブジェクトを印刷するためのトリックはありますか?
datetime オブジェクトを str() に強制するとうまくいくようです
print template.format(str(l[0]), str(l[1]))
しかし、文字列ではない値のリストを出力しようとしているので、そうする必要はありません。文字列テンプレートを作成することの要点は、リスト内の項目を出力することです。
文字列の書式設定に関する何かが欠けていますか、それともこれは Python のバグのように思われますか?
解決
@mgilson は、ドキュメントで見逃した解決策を指摘しました。リンク
現在、値に対して str() を呼び出す '!s' と repr() を呼び出す '!r' の 2 つの変換フラグがサポートされています。
いくつかの例:
"Harold's a clever {0!s}" # Calls str() on the argument first
"Bring out the holy {name!r}" # Calls repr() on the argument first