【发布时间】:2021-08-20 00:45:26
【问题描述】:
我对将多行字符串转换为 JSON 树结构的想法完全迷失了
所以,我在特定的 excel 列下有如下多行字符串:
/abc/a[2]/a/x[1]
/abc/a[2]/a/x[2]
由于上述字符串包含分隔符 / ,我可以使用它们来创建父子关系并将它们转换为 Python 字典(或)JSON,如下所示:
{
"tag": "abc",
"child": [
{
"tag": "a[2]",
"child": [
{
"tag": "a",
"child": [
{
"tag": "a",
"child": [
{
"tag": "x[1]"
},
{
"tag": "x[2]"
}
]
}
]
}
]
}
]
}
我无法为我的项目的这一部分提出逻辑,因为我需要寻找 [1],[2] 的存在并将它们分配给一个共同的父级,这需要以某种递归方式完成适用于任何长度的字符串的方式。请帮助我解决 Python 中的任何代码逻辑或向我提供建议。非常感谢!!
其他更新: 只是想知道是否也可以在 JSON 结构中包含其他列的数据。
例如:如果excel包含以下三列2行
| tag | text | type |
|---|---|---|
| /abc/a[2]/a/x[1] | Hello | string |
| /abc/a[2]/a/x[2] | World | string |
与原始问题中的 JSON 一起,是否可以将这些其他列信息添加为 JSON 中的键值属性(到相应的最内层子嵌套),如下所示。 这些不遵循相同的“/”分隔符格式,因此我不确定是否接近这个..
{
"tag": "abc",
"child": [
{
"tag": "a[2]",
"child": [
{
"tag": "a",
"child": [
{
"tag": "a",
"child": [
{
"tag": "x[1]",
"text": "Hello",
"type": "string"
},
{
"tag": "x[2]",
"text": "World",
"type": "string"
}
]
}
]
}
]
}
]
}
P.S:我觉得将数据添加到最里面的孩子以避免信息冗余是合适的......请随时建议以任何其他适当的方式包括这些其他列。
【问题讨论】:
-
我的答案中的 to_dict 函数是否适合您,或者您想要某种不同的函数?
-
是的,您的代码运行良好。我只需将其连接到我的 excel 列,遍历每一行并从中创建 JSON。此外,还包括其他列作为键值对。我刚刚遇到了 JSON 的麻烦,这两种解决方案都像一个魅力。再次感谢,伙计
-
列之间的分隔符是什么?像使用 1. 示例数据一样将新示例数据发布为字符串。