我要使用大量的csv文件来应对大数据挑战。在第二列中有数据时间,我只想读取数据。 我用
dt1=list1[1][1]
dt_obj1=datetime.datetime.strptime(dt1, '%Y-%m-%d %H:%M:%S')
之后
first_date=dt_obj1.date()
,效果很好。
问题在于,有几个条目(百万个中的10个)中只有日期而不是日期时间,因此与格式不匹配。
您有什么主意,我如何才能读取此条目中的日期(或忽略它们)?
答案 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