Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python datetime.strTime默认值_Python_Datetime - Fatal编程技术网

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内完成:\