如何将字符串转换为字典?

时间:2020-04-14 11:41:32

标签: python string dictionary

我得到了如下所示的字符串,如何将其转换为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}'

4 个答案:

答案 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}]