我有包含表示 ISO 格式日期的字符串列表的数据文件。目前,我正在阅读它们:
mydates = [ datetime.datetime.strptime(timdata[x], "%Y-%m-%dT%H:%M:%S") for x in range(len(timedata)) ]
这看起来非常简单,但在处理约 25000 个日期的庞大列表时速度慢得离谱 -> 每个转换后的列表大约 0.34 秒。 因为我有成千上万个这样的列表,所以我正在寻找一种更快的方法。但是,我还没有找到。 dateutil 解析器的性能更差......
最佳答案
这里有一种方法可以将速度提高约 3 倍。
原始版本:
In [23]: %timeit datetime.datetime.strptime("2013-01-01T01:23:45", "%Y-%m-%dT%H:%M:%S")
10000 loops, best of 3: 21.8 us per loop
更快的版本:
In [24]: p = re.compile('[-T:]')
In [26]: %timeit datetime.datetime(*map(int, p.split("2013-01-01T01:23:45")))
100000 loops, best of 3: 7.28 us per loop
这显然远不及 strptime()
灵活。
编辑:使用单个正则表达式提取日期组件稍微快一些:
In [48]: pp = re.compile(r'(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})')
In [49]: %timeit datetime.datetime(*map(int, pp.match("2013-01-01T01:23:45").groups()))
100000 loops, best of 3: 6.92 us per loop
关于python - 使用 Python strptime 将日期字符串列表转换为日期时间非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14163399/