Désolé pour le titre vague, j'ai besoin d'aide avec la magie Python et je ne pouvais penser à rien de plus descriptif.Script Python pour convertir des données aplaties compliquées en JSON
J'ai une structure de données JSON fixe dont j'ai besoin pour convertir un fichier CSV. La structure est fixe, mais profondément imbriquée avec des listes et autres. C'est semblable à ceci mais plus compliqué:
{
"foo" : bar,
"baz" : qux,
"nub" : [
{
"bub": "gob",
"nab": [
{
"nip": "jus",
"the": "tip",
},
...
],
},
...
],
"cok": "hed"
}
Espérons que vous obtenez l'idée. Listes sur dicts sur les listes sur les listes et ainsi de suite. Mon csv pour cela pourrait ressembler à ceci:
foo, baz, nub.bub, nub.nab.nip, nub.nab.the, cok
bar, qux, "gob" ,,,, "hed"
,,,,, "nab", "jus","tip",,
,,,,, "nab", "other", "values",,
Désolé si cela est difficile à lire, mais l'idée de base est de savoir s'il y a un élément de la liste, il sera dans la ligne suivante, et les valeurs sont répétées pour désigner ce sous -Les listes appartiennent à quoi.
Je ne cherche pas quelqu'un pour trouver une solution à ce bordel, juste peut-être quelques pointeurs sur les techniques ou les choses à examiner.
En ce moment, j'ai un plan sommaire:
Je commence par tourner l'en-tête dans une liste de tuples contenant les clés. Pour chaque groupe de lignes (item), je vais créer une copie de mon modèle dict. J'ai une fonction qui va définir une valeur dict à partir d'un tuple de clés, sauf si elle trouve une liste. Dans ce cas, je vais appeler une fonction récursive funky et passer mon itérateur, et continuer à remplir la dict dans cette fonction, et faire des appels récursifs que je trouve de nouvelles listes.
Je pourrais aussi faire beaucoup de hardcoding, mais qu'est-ce que c'est amusant?
Voilà mon histoire. Encore une fois, juste à la recherche de quelques indications sur la meilleure façon de le faire. Je l'ai écrit rapidement, donc il pourrait être un peu confus, s'il vous plaît laissez-moi savoir si d'autres informations aideraient. Merci!
Les formats en question sont fondamentalement assez distincts que tenter d'analyser un dans l'autre prouvera à la fois problématique et sujette aux erreurs. Pourquoi avez-vous besoin d'un fichier csv comme celui-ci? –
Quelqu'un fait un jeu de données de test pour moi, et c'est le format utilisé. Ce n'est pas idéal mais je ne veux pas les faire changer (ils le font à la main ...). Je peux l'analyser, ça va juste être une douleur dans le cul. – user3779812