【Python】excelファイルのデータを辞書形式に変換して保存


【需要説明】
EXcelテーブルを辞書に変換して保存し、読みやすいようにします.
 
【手順】
たとえば、次の表は「当直表.xlsx」です.
date
name
age
20200617
xiaowang
16
20200618
xiaozhang
18
(1)「当直表.xlsx」を無フォーマットの「当直表.csv」として保存する.デフォルトはカンマで区切ります.
(2)最初の列の日付をキーワードとして空の辞書を構築する.例えば、dic={'20200617':{},'20200618':{}}である.
(3)キーワードに対応する値は2級辞書,2級キーワードはnameとageである.最終辞書は
dic = {'20200617': {'name': 'xiaowang', 'age':16}, '20200618':{'name': 'xiaozhang', 'age':18}}
 
【コード】
def get_dic_from_csv(file_path):
    with open(file_path, 'r') as fd:
        raw_data = fd.readlines()
    headline = raw_data[0].strip().split(",")
    data = [it.strip().split(",") for it in raw_data[1:]]
    
    keys = [it[0] for it in data]   # (  )       
    sub_keys = headline[1:]          # (  )       
    
    dic = dict(zip(keys, [{} for i in range(len(keys))]))
    for line in data:
        key = line[0]
        if dic[key] != {}:
            print("Error: repeated values", key, dic[key])
        else:
            value = dict(zip(sub_keys, [int(it) for it in line[1:]]))
            dic[key] = value
    
    import os, json
    out_path = os.path.splitext(file_path)[0] + ".json"
    with open(out_path, "w") as fd:
        json.dump(dic, fd)