我得到了如下所示的字符串,如何将其转换为dict?
'{"x":0.4070095121860504,"y":21.447710037231445,"z":14.341651916503906},
{"x":0.4153441786766052,"y":20.767126083374023,"z":13.665939331054688},
{"x":1.1504541635513306,"y":21.594528198242188,"z":14.19514274597168},
{"x":-0.3110668659210205,"y":21.66669273376465,"z":14.237279891967773}'
答案 0 :(得分:2)
除了开头[
和末尾]
之外,它看起来像JSON。
您可以使用类似的内容:
import json
data = json.loads("[" + mystring + "]")
结果将是字典列表
答案 1 :(得分:1)
使用json库:
import json
str1 =' your dict'
dict1 = json.loads(str1)
所以在这里:
str1 = '[{"x":0.4070095121860504,"y":21.447710037231445,"z":14.341651916503906},{"x":0.4153441786766052,"y":20.767126083374023,"z":13.665939331054688},{"x":1.1504541635513306,"y":21.594528198242188,"z":14.19514274597168},{"x":-0.3110668659210205,"y":21.66669273376465,"z":14.237279891967773}]'
import json
dict1 = json.loads(str1)
您也可以使用:
eval(str1)
但是不建议使用eval。 您的字符串有多个字典。所以:
str1 = '{' + your string + '}'
或者:
str1 = '(' + your string + ')'
或类似地,列表:
str1 = '[' + your multiple duct string + ']'
答案 2 :(得分:1)
使用json.loads()
将其转换为字典。例如:
In [24]: st
Out[24]: '{"K1": "v1", "K2": "\\nv2"}'
In [25]: json.loads(st)
Out[25]: {'K1': 'v1', 'K2': '\nv2'}
答案 3 :(得分:1)
您可以在开头添加ast.literal_eval
并在结尾添加[
后使用]
from ast import literal_eval
list_dicts = literal_eval(f'[{s}]')
list_dicts
输出:
[{'x': 0.4070095121860504, 'y': 21.447710037231445, 'z': 14.341651916503906},
{'x': 0.4153441786766052, 'y': 20.767126083374023, 'z': 13.665939331054688},
{'x': 1.1504541635513306, 'y': 21.594528198242188, 'z': 14.19514274597168},
{'x': -0.3110668659210205, 'y': 21.66669273376465, 'z': 14.237279891967773}]