如何将没有双引号元素的列表的字符串表示形式转换为实际列表?

我参考了许多来源,但大多数用途json.loads()ast.literal_eval()不适用于我的情况:

x = '[(0.0, 58.099669), 56565, Raining]'

预期输出:

x = [(0.0, 58.099669), 56565, 'Raining']

有什么解决方法吗?

回答

那这个呢:

class default_key(dict):
    def __missing__(self, key):
        return key

d = default_key()
x = '[(0.0, 58.099669), 56565, Raining]'

res = eval(x, d, {})
# res = [(0.0, 58.099669), 56565, 'Raining']

解释:eval通常使用globals()locals()字典。但是,如果您不提供locals()并替换globals()为在查找完成时返回键名称的 dict(并且未找到键),则给定列表中的每个“变量”名称都将转换为字符串什么时候eval被调用。

然而,这仍然可能是不安全的。看到这个。

  • This has worked very beautifully for me! Thank you so much for this clever solution!

以上是如何将没有双引号元素的列表的字符串表示形式转换为实际列表?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>