Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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中使用dateutil.parser处理缺少的值_Python_Date_Parsing - Fatal编程技术网

在python中使用dateutil.parser处理缺少的值

在python中使用dateutil.parser处理缺少的值,python,date,parsing,Python,Date,Parsing,我正在使用python dateutil标准化日期格式,理想的情况是我拥有所有日期: from dateutil.parser import parse date1 = '2012/01/02' parse(date1) datetime.datetime(2012, 1, 2, 0, 0) 但并非所有记录都是这样,我想处理两个案例: 首先,无效值: date2 = '2012/19/01' parse(date2) ValueError: month must be in 1..12 da

我正在使用python dateutil标准化日期格式,理想的情况是我拥有所有日期:

from dateutil.parser import parse
date1 = '2012/01/02'
parse(date1)
datetime.datetime(2012, 1, 2, 0, 0)
但并非所有记录都是这样,我想处理两个案例:

首先,无效值:

date2 = '2012/19/01'
parse(date2)
ValueError: month must be in 1..12

date2 = '2012/1/00'
parse(date2)
ValueError: day is out of range for month
对于这些情况,我仍然希望有任何可用的数据,第一个例子是年,第二个例子是年和月

第二种情况,缺少值:

date3 = '/1/10'
parse(date3)
datetime.datetime(2017, 1, 10, 0, 0)

如果日期、月份或年份不可用,我不想在没有得到通知的情况下获取当前的年份、月份或日期,我需要为这些情况使用默认值。

也许您应该编写一个解析器方法,它检查输入字符串并用默认值替换非法日期:

from datetime import datetime
default=['2017','1','1']

def paretime(t):
    i=t.split('/')
    if len(i)<3:
        return None
    y,m,d = i
    if y not in range(1,2018):
        y=default[0]
    if m not in range(1, 13):
        m=default[1]
    if d not in range(1, 32):
        d=default[2]
    return datetime.strptime("-".join([y,m,d]), '%Y-%m-%d')


print paretime('/1/1')

输出:

2017-01-01 00:00:00
2017-01-01 00:00:00

希望这有帮助。

?什么是
parse
?你能解析这个函数吗definition@saikumarm从dateutil.parser导入解析
2017-01-01 00:00:00