Обобщение случая преобразования файла .json в .csvPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обобщение случая преобразования файла .json в .csv

Сообщение Anonymous »

У меня есть файлы .json в следующем формате:
{
"uls":{
"equ1-L1-u": {"D": 1.10, "La": 1.50, "Lb": 1.50},
"equ1-L2-u": {"D": 1.10, "La": 1.50, "Lb": 1.50},
},
"sls":{
"cha-L1": {"Ld": 1.00, "Le": 1.00, "Lf": 1.00, "Lg": 1.00, "Lh": 1.00},
"cha-L2": {"D": 1.00, "Df": 1.00},
}
}

который я хочу преобразовать в формат стиля «базы данных» CSV:
Criteria, Name, D, Df, La, Lb, Ld, Le, Lf, Lg, Lh
uls, equ1-L1-u, 1.10, , 1.50, 1.50, , , , ,
uls, equ1-L2-u, 1.10, , 1.50, 1.50, , , , ,
sls, cha-L1, , , , ,1.00 , 1.00, 1.00, 1.00, 1.00
sls, cha-L2, 1.00, 1.00, , , , , , ,

В идеале мне не нужно было бы заранее определять ключи значений, но сейчас я могу сделать это при необходимости.
Вот что я теперь понял, это работает для этого конкретного случая 2-го уровня вложенности. Я могу заставить его работать на 3 или 4 уровнях вложенности, изменив код, но в идеале один и тот же код можно использовать для всех уровней вложенности (может быть, рекурсия?).
# Function to convert json objects to csv
import json
import csv

def make_csv_dict(data, key_headers):
csv_dict = []
for i in data:
for j in data:
csv_dict.append({
key_headers[0]: i,
key_headers[1]: j,
**data[j]
})
return csv_dict

### ENTER DATA HERE ###
key_headers = ["Criteria", "Name"]
path = "File.json"
### ENTER DATA HERE ###

# Read json
with open(path) as json_file:
data = json.load(json_file)

# make csv_dict from .json data
csv_dict = make_csv_dict(data, key_headers)

# writing to csv file
fieldnames = ["Criteria", "Name", "D", "Df", "La", "Lb", "Lc", "Ld", "Le", "Lf", "Lg", "Lh", "Sl", "Sh", "W", "T", "A", "E"]

with open(path.replace(".json",".csv"), 'w', newline="") as f:
writer = csv.DictWriter(f, fieldnames)
writer.writeheader()
writer.writerows(csv_dict)


Подробнее здесь: https://stackoverflow.com/questions/787 ... ile-to-csv
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Можно ли сделать обобщение с помощью DbSet?
    Гость » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Гость
  • Можно ли сделать обобщение с помощью DbSet?
    Гость » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Гость
  • Обобщение табличных данных [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Обобщение текста с глубоким обучением
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как определить обобщение to_string и to_wstring, чтобы избежать дублирования кода
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»