有没有办法让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
但我想要更优雅一些。有人知道这里的解决方案吗?
提前致谢。
答案 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
将引发以下异常(您可能要处理其他异常):
date_string
不是str
(例如,如果您传递None)date_string
与格式不匹配然后您可以(例如从strptime
导入utils
(而不是datetime.datetime.strptime
)。