私は最後にjsonファイルを提供するためにexcelファイルからデータを読み込むためにopenpyxlを使用します。問題は、json(またはPython辞書)の階層構造を行うアルゴリズムを理解できないことです。Python - マルチレベル1、1.1、1.1.1、1.1.2(階層的)の名前で辞書に追加する
データ形式は、次のようなものです:
出力は次のようにする必要があります:ここで
{
'id' : '1',
'name' : 'first',
'value' : 10,
'children': [ {
'id' : '1.1',
'name' : 'ab',
'value': 25,
'children' : [
{
'id' : '1.1.1',
'name' : 'abc' ,
'value': 16,
'children' : []
}
]
},
{
'id' : '1.2',
...
]
}
は、私が出ているものですが、私はすることができます」 '1.1.1'と '1.1.1.1'などは1.1と同じレベルになるため、 '1.1'を超えます。
from openpyxl import load_workbook
import re
from json import dumps
wb = load_workbook('resources.xlsx')
sheet = wb.get_sheet_by_name(wb.get_sheet_names()[0])
resources = {}
prev_dict = {}
list_rows = [ row for row in sheet.rows ]
for nrow in range(list_rows.__len__()):
id = str(list_rows[nrow][0].value)
val = {
'id' : id,
'name' : list_rows[nrow][1].value ,
'value' : list_rows[nrow][2].value ,
'children' : []
}
if id[:-2] == str(list_rows[nrow-1][0].value):
prev_dict['children'].append(val)
else:
resources[nrow] = val
prev_dict = resources[nrow]
print dumps(resources)
おかげで、 – asm