有没有一种灵活的方法来摆脱 Python 中日期字符串的前导零?
在下面的示例中,我希望得到 12/1/2009 作为回报,而不是 12/01/2009。我想我可以使用正则表达式。但对我来说,这似乎有点矫枉过正。有更好的解决方案吗?
>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'
有没有一种灵活的方法来摆脱 Python 中日期字符串的前导零?
在下面的示例中,我希望得到 12/1/2009 作为回报,而不是 12/01/2009。我想我可以使用正则表达式。但对我来说,这似乎有点矫枉过正。有更好的解决方案吗?
>>> 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
并替换为空。
IE。:
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()
实现,并且可能无法完全移植到所有平台,如果这对您很重要的话。