Pythonで日付文字列の先行ゼロを取り除くための機敏な方法はありますか?
以下の例では、2009年12月1日ではなく2009年12月1日を取得したいと思います。正規表現が使えると思います。しかし、私にはそれはやり過ぎのように思えます。より良い解決策はありますか?
>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'
Pythonで日付文字列の先行ゼロを取り除くための機敏な方法はありますか?
以下の例では、2009年12月1日ではなく2009年12月1日を取得したいと思います。正規表現が使えると思います。しかし、私にはそれはやり過ぎのように思えます。より良い解決策はありますか?
>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'
より簡単で読みやすい解決策は、自分でフォーマットすることです。
>>> d = datetime.datetime.now()
>>> "%d/%d/%d"%(d.month, d.day, d.year)
4/8/2012
@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'
非常に単純な正規表現をお勧めします。これがパフォーマンスに不可欠なわけではありませんね。
検索し\b0
て何も置き換えないでください。
I. e .:
import re
newstring = re.sub(r"\b0","",time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y')))
>>> time.strftime('%-m/%-d/%Y',time.strptime('8/1/2009', '%m/%d/%Y'))
'8/1/2009'
ただし、これはシステムの実装に依存しておりstrftime()
、重要な場合は、すべてのプラットフォームに完全に移植できるとは限りません。