rson库可以做到这一点,但您可能必须将解析器子类化,以允许在单个结构中混合使用数组和dict样式的元素。在
编辑实际上,这可能有点困难,但是rsonlite包将(在某种程度上)与您的数据一起工作。在
rsonlite是一个很小的单模块包,只有300行长,同一个源代码可以同时用于python2和python3。在
下面是一个示例,它显示了数据的3个不同输出。第一个输出是rsonlite.dumps()给出的结果,第二个输出是稍微高一点的rsonlite.simpleparse()给出的结果,第三个输出从simpleparse获取结果,并通过一个自定义的fixup()函数来创建一个纯嵌套的字典数据结构,其中任何缺少的值都简单地设置为None,所有的冒号字符都会被检查和删除。在from rsonlite import loads, simpleparse
mystring = '''
node1:
node1
node2:
node1
node2:
node1
node2
node3:
node1:
node1
node2:
node1
node2
'''
def fixup(node):
if isinstance(node, str):
return node
elif isinstance(node, dict):
for key in node:
assert key.endswith(':'), key
retur