Избавиться от ведущих нулей для строк даты в Python?

Есть ли проворный способ избавиться от ведущих нулей для строк даты в Python?

В приведенном ниже примере я хотел бы получить 12/1/2009 взамен вместо 12/01/2009. Думаю, я мог бы использовать регулярные выражения. Но для меня это кажется излишним. Есть ли лучшее решение?

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

См. также

Python strftime - дата без ведущего 0?

Ответы

Ответ 1

@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'

Ответ 2

Более простое и читаемое решение состоит в том, чтобы отформатировать его самостоятельно:

>>> d = datetime.datetime.now()
>>> "%d/%d/%d"%(d.month, d.day, d.year)
4/8/2012

Ответ 3

Я бы предложил очень простое регулярное выражение. Это не так важно, важно?

Найдите \b0 и ничего не замените.

я. е:.

import re
newstring = re.sub(r"\b0","",time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y')))

Ответ 4

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

Однако я подозреваю, что это зависит от реализации системы strftime() и может быть не полностью переносимым для всех платформ, если это важно для вас.