我参考了很多资料,但大多数都使用 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()
替换为返回查找时键名字的字典(并且该键未被找到),则给定列表中的每个“变量”名称在调用eval
时都会转换为字符串。
然而,这仍然可能不安全。请参见这里。
None
应该变成字符串'None'
还是实际的None
对象?你如何判断? - Karl Knechtel