Ответ 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'
Есть ли проворный способ избавиться от ведущих нулей для строк даты в Python?
В приведенном ниже примере я хотел бы получить 12/1/2009 взамен вместо 12/01/2009. Думаю, я мог бы использовать регулярные выражения. Но для меня это кажется излишним. Есть ли лучшее решение?
>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'
@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'
Более простое и читаемое решение состоит в том, чтобы отформатировать его самостоятельно:
>>> d = datetime.datetime.now()
>>> "%d/%d/%d"%(d.month, d.day, d.year)
4/8/2012
Я бы предложил очень простое регулярное выражение. Это не так важно, важно?
Найдите \b0
и ничего не замените.
я. е:.
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()
и может быть не полностью переносимым для всех платформ, если это важно для вас.