python - 使用 Python strptime 将日期字符串列表转换为日期时间非常慢

标签 python numpy

我有包含表示 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/

相关文章:

python - Matplotlib:如何根据 LineCollection 的坐标更改其颜色?

numpy - Keras LSTM 训练数据格式

python - 在 python 中优化均值

python - 按行排列二维数组

python - numpy 无法通过终端运行

javascript - 将表示为 numpy 数组的音频数据从 python 发送到 Javascript

python - 需要帮助诊断 Python/MySQL 插入/更新异常

python - 从 python 字符串中删除多余的空格

python - 导入featuretools和AttributeError : module 'tornado.platform.asyncio' has no attribute 'AnyThreadEventLoopPolicy'

python - 如何从 (.db) 文件读取 python 变量并为其赋值