Python datetime.strTime默认值
有没有办法获取Python datetime.strTime默认值,python,datetime,Python,Datetime,有没有办法获取datetime.strtime()来为失败的解析提供默认值(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],
datetime.strtime()
来为失败的解析提供默认值(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
但我想要更优雅一点的。有人知道这里有什么解决办法吗
提前感谢。datetime软件包没有为您的问题提供内置解决方案 更优雅(接近您的建议)的解决方案是定义您自己的函数(例如,在您的utils.py文件或等效文件中)
从日期时间导入日期时间
def strptime(日期字符串,格式,默认值=无):
尝试:
return datetime.strtime(日期字符串,格式)
除了(ValueError、TypeError):
返回默认值
将引发以下异常(您可能希望处理其他异常):
- 类型错误:如果
不是date\u字符串
(例如,如果未传递任何字符串)str
- ValueError:如果
格式不匹配日期\u字符串
然后,您可以导入
strtime
(例如从utils
导入),而不是datetime.datetime.strtime
您当前的解决方案看起来非常优雅。虽然我会捕捉到strtime
引发的特定异常,而不是一个简单的异常:
(捕捉所有内容)。您这里更大的问题是,混合使用这两种日期格式会导致歧义-应该将10/11/12
解析为什么?很遗憾,这不能在lambda内完成:\