将嵌套的花括号变成 dict python

use*_*183 3 python dictionary data-structures

我有一个看起来像这样的文件:

{val1 {val2 {d1 d2 d3}}}
Run Code Online (Sandbox Code Playgroud)

我想制作一个 dict 或其他合适的数据结构,以便像这样访问结构:

data[val1][val2]
Run Code Online (Sandbox Code Playgroud)

将以d1, d2, d3另一种合适的数据结构(例如列表、元组或集合)输出数据值。

是否有一个内置的库函数可以做到这一点,或者任何人都可以提出一种简单的方法来做到这一点?

注意:数据点的数量d1 d2 d3可能不是恒定的,所以对于一组不同的值,我可以d1 d2 d3 d4 d5等。

编辑:我应该补充一点,我写了输出,所以如果需要,我可以将大括号更改为完全不同的东西。

Håk*_*Lid 5

如果你所有的数据都像例子一样简单,你可以做一些字符串操作,把它变成json。

import re, json
data = '{val1 {val2 {d1 d2 d3}}}'
data = re.sub(r'(\w+)', r'"\1"', data)      # {"val1" {"val2" {"d1" "d2" "d3"}}}
data = re.sub(r'"\s*{', r'": {', data)      # {"val1": {"val2": {"d1" "d2" "d3"}}}
data = re.sub(r'" "', r'", "', data)        # {"val1": {"val2": {"d1", "d2", "d3"}}}
data = re.sub(r'{([^{}]*)}', r'[\1]', data) # {"val1": {"val2": ["d1", "d2", "d3"]}}
json.loads(data)
Run Code Online (Sandbox Code Playgroud)

如果您还有具有更复杂嵌套的数据,您可能需要再添加一两个步骤来添加或删除逗号,然后它才能成为有效的 json。