16

Pythonで日付文字列の先行ゼロを取り除くための機敏な方法はありますか?

以下の例では、2009年12月1日ではなく2009年12月1日を取得したいと思います。正規表現が使えると思います。しかし、私にはそれはやり過ぎのように思えます。より良い解決策はありますか?

>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'

も参照してください

Python strftime-先行ゼロなしの日付?

4

4 に答える 4

22

より簡単で読みやすい解決策は、自分でフォーマットすることです。

>>> d = datetime.datetime.now()
>>> "%d/%d/%d"%(d.month, d.day, d.year)
4/8/2012
于 2010-02-22T09:33:15.103 に答える
8

@OP、文字列操作を少し行うのにそれほど時間はかかりません。

>>> t=time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
>>> '/'.join( map( str, map(int,t.split("/")) ) )
'12/1/2009'
于 2010-02-22T09:24:15.120 に答える
3

非常に単純な正規表現をお勧めします。これがパフォーマンスに不可欠なわけではありませんね。

検索し\b0て何も置き換えないでください。

I. e .:

import re
newstring = re.sub(r"\b0","",time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y')))
于 2010-02-22T09:19:40.527 に答える
2
>>> time.strftime('%-m/%-d/%Y',time.strptime('8/1/2009', '%m/%d/%Y'))
'8/1/2009'

ただし、これはシステムの実装に依存しておりstrftime()、重要な場合は、すべてのプラットフォームに完全に移植できるとは限りません。

于 2010-02-22T09:35:22.943 に答える