我有一个作为字符串导入的日期时间列表:
datetimes = ['datetime.datetime(2021, 2, 16, 12, 39, 54, 30886)', 'datetime.datetime(2021, 2, 16, 12, 40, 5, 238783)' ... ]
如何将字符串转换为日期时间对象?
答案 0 :(得分:0)
有很多方法可以做到这一点,这里是一种
import datetime
def todate(s):
prefix = 'datetime.datetime('
parts = [int(x) for x in s[len(prefix):-1].split(", ")]
return datetime.datetime(*parts)
datetimes = ['datetime.datetime(2021, 2, 16, 12, 39, 54, 30886)', 'datetime.datetime(2021, 2, 16, 12, 40, 5, 238783)']
print([todate(x) for x in datetimes])
答案 1 :(得分:0)
这是转换为字符串的python 源代码。与其编写自定义解析器,不如使用...python 的解析器来解析它:)。这可以通过 eval
:
import datetime
dt_vec = [eval(dt) for dt in datetimes]
输出:
[datetime.datetime(2021, 2, 16, 12, 39, 54, 30886),
datetime.datetime(2021, 2, 16, 12, 40, 5, 238783)]
这里有一个强烈的警告:不要如果您不知道代码来自哪里,或者可以看出它是恶意的,请不要使用 eval。事实上,您一直在计算机上运行代码,而无需检查(每次下载二进制文件并运行它?)但值得注意。