gpt4 book ai didi

python - 如何将包含字典列表的字符串转换为 Python 对象?

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:10 25 4
gpt4 key购买 nike

ugly = "[{'ride': 1, 'pickup_time': datetime(2016, 3, 17, 15, 36, 35, 976202)},
{'ride': 2, 'pickup_time': datetime.datetime(2016, 3, 17, 15, 41, 35, 976202)}]"
# The actual variable contains a lot more dictionnaries...`

我想将丑陋的变量转换为真正的 Python 对象。我尝试了 json.loads()ast.literal_eval() 但它只适用于一个字典。

这就是为什么在此之前,我尝试将这个字符串拆分成几个字典,但是 split() 方法只有一个分隔符,所以我似乎需要一个 REGEX 来执行此操作。

最简单的方法是什么?谢谢。

最佳答案

首先,您应该在调用datetime 方法时保持一致。在第一个字典中,您使用 datetime,在第二个字典中使用 datetime.datetime

无论您尝试让 Python 评估字符串的方式如何,您都不能同时让 datetime 成为一个函数(第一个字典)和一个模块(第二个)。一旦你解决了这个问题,你将被迫使用邪恶的 eval 函数,因为 json.loadsast.litteral_eval 都不会接受函数.它们通常被精确地用于避免评估调用任何函数...

但是如果这是你想要做的(并且你确定 ugly 不包含有害代码),那么这是有效的:

>>> ugly = "[{'ride': 1, 'pickup_time': datetime.datetime(2016, 3, 17, 15, 36, 35, 976202)},{'ride': 2, 'pickup_time': datetime.datetime(2016, 3, 17, 15, 41, 35, 976202)}]"
>>> import datetime
>>> dlist = eval(ugly)
>>> dlist
[{'ride': 1, 'pickup_time': datetime.datetime(2016, 3, 17, 15, 36, 35, 976202)}, {'ride': 2, 'pickup_time': datetime.datetime(2016, 3, 17, 15, 41, 35, 976202)}]

关于python - 如何将包含字典列表的字符串转换为 Python 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36068779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com