Сбор информации по json импорт в csv
Есть такого рода json
{
"version": 2,
"states": {
"A область": {
"enabled": false,
"type:": "state",
"districts": {
"A район": {
"enabled": false,
"type": "district",
"enabled_at": null,
"disabled_at": null
},
"B район": {
"enabled": false,
"type": "district",
"enabled_at": null,
"disabled_at": null
},
"C район": {
"enabled": false,
"type": "district",
"enabled_at": null,
"disabled_at": null
},
},
"enabled_at": null,
"disabled_at": "2022-03-27T19:56:37+00:00"
},
"B область": {
"enabled": false,
"type:": "state",
"districts": {
"A район": {
"enabled": false,
"type": "district",
"enabled_at": null,
"disabled_at": null
},
"B район": {
"enabled": false,
"type": "district",
"enabled_at": null,
"disabled_at": null
},
"C район": {
"enabled": false,
"type": "district",
"enabled_at": null,
"disabled_at": null
},
},
"enabled_at": null,
"disabled_at": "2022-03-27T19:56:37+00:00"
},
нужно пробежаться по файлу и перенести информацию в csv файл
(states,type,districts,enabled,enabled_at,disabled_at)
буду очень признателен если поможете с циклом сбора информации. Спасибо
with open(path, 'r') as f:
data = json.loads(f.read())
print(data["states"])
States = data["states"]
States = States.keys()
for state in States:
list_states.append(state)
for i in data["states"]:
State = i
for x in data["states"][i]:
Alert = x.get("enabled")
Type = x.get("type")
Enabled_at = x.get("enabled_at")
Disabled_at = x.get("disabled_at")
list_all_states.append(
{
"State": State,
"Alert": Alert,
"Type": Type,
"Enabled_at": Enabled_at,
"Disabled_at": Disabled_at
}
)
я пытался сделать след образом, но выдает такого рода ошибку
Alert = x.get("enabled")
AttributeError: 'str' object has no attribute 'get'
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
for x in data["states"][i]:
Этот цикл не нужен, он выдаёт ключи словаря, к которым вы там ниже всё-равно вручную обращаетесь. Можно починить так:
x = data["states"][i]
Ну и блок кода, который ниже, нужно будет сдвинуть влево, потому что он теперь не внутри цикла, а просто.
Код, конечно, не эффективный, но вам главное понемногу начать разбираться что и как, потом легче будет.