从复杂字符串中提取嵌套的Python字典

时间:2017-09-18 19:04:06

标签: python regex parsing nested

我有一个带有嵌套字典的复杂字符串。这本词典还有一个列表,里面有三个相似的词典。如何将其转换为Python字典?请帮忙。

输入:'name: "data dict" id: 2\nv6: false\nstats {\n hosts {\n cnt1: 256\n cnt2: 0\n }\n groups {\n cnt1: 1\n cnt2: 0\n }\n main_groups {\n cnt1: 1\n cnt2: 0\n }\n main_hosts {\n cnt1: 256\n cnt2: 0\n }\n}\n group_id: "None"'

预期结果:{ name: "data dict", id: 2, v6: false, stats: { hosts: { cnt: 1, cnt: 2 } groups: { cnt: 1, cnt: 2 } main: { cnt: 1, cnt: 2 } main_hosts: { cnt: 1, cnt: 2 } } }

2 个答案:

答案 0 :(得分:1)

正如TS所提到的,有一个带有嵌套字典的字符串(我第一次将其解释为对有效性的隐式引用)。如果字符串内容是有效 JSON,您可以使用json内置包,包括解析它所需的全部内容:

import json
data = json.loads(your_string)

JSON package docs中阅读更多内容。

如果没有,您可以编写正则表达式或使用pyparsing包来处理此字符串。

答案 1 :(得分:0)

通过对输入进行一些编辑,它可以由yaml加载,数据对象可以按照您的要求加载,这是一组嵌套的词典。 输入字符串是如何创建的?具体的编辑是:

  • 更改“data dict”id:“to”data dict“\ nid:”,
  • 将“\ n group_id”更改为“\ ngroup_id”
  • 将所有{改为:,
  • 删除所有}。