如何在python中编写一个函数,该函数将带有一个包含多个字典的字符串,每行一个,并转换它以便json.loads可以在单次执行中解析整个字符串。
例如,如果输入是(每行一个字典):
Input = """{"a":[1,2,3], "b":[4,5]}
{"z":[-1,-2], "x":-3}"""
这不会用json.loads(输入)解析。我需要编写一个函数来修改它,以便它可以正确解析。 我在想如果函数可以将它改成这样的东西,json将能够解析它,但我不确定如何实现它。:
Input2 = """{ "Dict1" : {"a":[1,2,3], "b":[4,5]},
"Dict2" : {"z":[-1,-2], "x":-3} }"""
答案 0 :(得分:3)
>>> import json
>>>
>>> dict_str = """{"a":[1,2,3], "b":[4,5]}
>>> {"z":[-1,-2], "x":-3}"""
>>>
>>> #strip the whitespace away while making list from the lines in dict_str
>>> dict_list = [d.strip() for d in dict_str.splitlines()]
>>>
>>> dict_list
>>> ['{"a":[1,2,3], "b":[4,5]}', '{"z":[-1,-2], "x":-3}']
>>>
>>> j = [json.loads(i) for i in dict_list]
>>> j
>>> [{u'a': [1, 2, 3], u'b': [4, 5]}, {u'x': -3, u'z': [-1, -2]}]
不是您所要求的功能形式,但代码几乎相同。此外,这会在列表中生成dicts。
添加以下内容可能对您有用
>>> d = {('Dict'+str(i+1)):v for i in range(len(j)) for v in j}
>>> d
>>> {'Dict1': {u'x': -3, u'z': [-1, -2]}, 'Dict2': {u'x': -3, u'z': [-1, -2]}}