这个问题已经有一个答案在这里:

有一个灵活的方式摆脱导致零日期串蟒蛇?

在例如下面我想要得到12/1/2009在返回而不是12/01/2009.我想我可以使用普通的表达方式。但对我来说,似乎喜欢矫枉过正。是有一个更好的解决办法?

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

也参看

蟒蛇strftime新的不会导致0?

有帮助吗?

解决方案

@运,它并不需要多做一点串的操纵。

>>> 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 和替换什么也没有。

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() 实施并不能完全移植到的所有平台,如果该事项给你。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top