Python datetime.strptime默认值

时间:2014-12-17 21:23:34

标签: python datetime

有没有办法让datetime.strptime()在失败的解析中给我一个默认值(在这种情况下为None)?我有用户从文件中输入的数据可能是格式不正确的日期。日期应该是mm / dd / yy的形式,但有些人已经把它们dd / mm / yy。所以文件看起来像这样:

user1 01/30/14
user2 02/19/12
user3 27/02/11

我不需要考虑格式不正确的日期,所以我可以返回None。我知道我可以这样做:

try:
    return datetime.strptime(row[1], '%m/%d/%y')
except:
    return None

但我想要更优雅一些。有人知道这里的解决方案吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

datetime软件包未提供针对您的问题的内置解决方案。

更优雅(接近您的建议)的解决方案是定义自己的函数(例如,在utils.py文件或等效文件中)。

from datetime import datetime

def strptime(date_string, format, default=None):
    try:
        return datetime.strptime(date_string, format)
    except (ValueError, TypeError):
        return default

将引发以下异常(您可能要处理其他异常):

  • TypeError:如果date_string不是str(例如,如果您传递None)
  • ValueError:如果date_string与格式不匹配

然后您可以(例如从strptime导入utils(而不是datetime.datetime.strptime)。