【Python】excelファイルのデータを辞書形式に変換して保存
1417 ワード
【需要説明】
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}}
【コード】
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)