【发布时间】:2019-03-31 03:42:35
【问题描述】:
我有一个由标签和行分隔的树结构,如下所示:
a
\t1
\t2
\t3
\t\tb
\t\tc
\t4
\t5
And I am looking to turn this into:
{
'name': 'a',
'children': [
{'name': '1'},
{'name': '2'},
{
'name': '3'
'children': [
{'name': 'b'},
{'name': 'c'}
]
},
{'name': '4'},
{'name': '5'}
]
}
用于 d3.js 可折叠树数据输入。我假设我必须以某种方式使用递归,但我不知道如何。
我尝试将输入变成这样的列表:
[('a',0), ('1',1), ('2',1), ('3',1), ('b',2), ('c',2), ('4',1), ('5',1)]
使用此代码:
def parser():
#run from root `retail-tree`: `python3 src/main.py`
l, all_line_details = list(), list()
with open('assets/retail') as f:
for line in f:
line = line.rstrip('\n ')
splitline = line.split(' ')
tup = (splitline[-1], len(splitline)-1)
l.append(splitline)
all_line_details.append(tup)
print(tup)
return all_line_details
这里,第一个元素是字符串本身,第二个元素是该行中的制表符数。不确定执行此操作的递归步骤。感谢任何帮助!
【问题讨论】:
标签: python python-3.x string parsing string-parsing