在python中解析日期的优雅方式

时间:2013-09-26 13:31:19

标签: python

我正在寻找从字符串中解析日期。这个字符串可以包含不同的格式,我事先并不知道。

from datetime import datetime

try:
    return datetime.strptime(text, '%m/%d/%Y'))
except:
    try:
        return datetime.strptime(text, '%m/%d/%y')) 
    except:
        try:
            return datetime.strptime(text, '%Y/%m/%d'))
        except:
            try:
                return datetime.strptime(text, '%b%d/%Y'))
            except:
                return None

显然,这看起来太冗长了。我确信使用地图有更好的方法,但我真的很想听听你的意见 - 我讨厌重新发明轮子。

3 个答案:

答案 0 :(得分:6)

from datetime import datetime

def getdate(text):
    formats = ('%m/%d/%Y', '%m/%d/%y', '%Y/%m/%d', '%b%d/%Y')
    for format in formats:
        try:
            return datetime.strptime(text, format)
        except:
            pass

答案 1 :(得分:4)

如何循环使用提供的格式优先级?

from datetime import datetime

def convert(text):
    for format in [ '%m/%d/%Y', '%m/%d/%y', '%Y/%m/%d', '%b%d/%Y' ]:
        try:
            return datetime.strptime(text, format)
        except:
            continue
    return None

答案 2 :(得分:3)