如果某些日期时间值“与格式不匹配”​​怎么办?

时间:2019-04-16 06:05:18

标签: python-3.x datetime

我要使用大量的csv文件来应对大数据挑战。在第二列中有数据时间,我只想读取数据。 我用

dt1=list1[1][1]
dt_obj1=datetime.datetime.strptime(dt1, '%Y-%m-%d %H:%M:%S')

之后 first_date=dt_obj1.date(),效果很好。 问题在于,有几个条目(百万个中的10个)中只有日期而不是日期时间,因此与格式不匹配。 您有什么主意,我如何才能读取此条目中的日期(或忽略它们)?

2 个答案:

答案 0 :(得分:0)

您可以使用dateutil库。使用此库的优点是您不必担心格式。它的解析器会自动选择与您的数据匹配的格式。

from dateutil.parser import *
dt_1 = parse("Sat Oct 11 17:13:46 UTC 2003")

答案 1 :(得分:0)

您总是可以使用try / catch设计阅读方式,假设您在formats列表中有所有可能的格式,那么您可以这样做

dt = None
for format in formats:
    try:
        dt = datetime.datetime.strptime(dt, format)
        break
    except:
        pass

这将确保您仅在获得正确格式时才中断循环,否则请继续尝试可能的格式。

否则,您可以使用外部dateutil库解析函数parser.parse,该函数可以解析任何日期时间格式,而与格式无关

from dateutil import parser

print(parser.parse("1990-01-21 14:12:11"))
print(parser.parse("1990-01-21"))
#1990-01-21 14:12:11
#1990-01-21 00:00:00