Código de Python - Convertir un JSON a CSV

Requerimientos

python 3

Versión 1.0
estrellaestrellaestrellaestrellaestrella(1)

Publicado el 23 de Julio del 2019gráfica de visualizaciones de la versión: Versión 1.0
5.308 visualizaciones desde el 23 de Julio del 2019
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

De este json:
1
2
3
4
5
6
7
[{"ref":"mA", "precio":"10", "codigo":"001"},
{"ref":"mB", "precio":"1", "codigo":"002"},
{"ref":"mC", "precio":"13", "codigo":"003"},
{"ref":"mD", "precio":"8", "codigo":"004"},
{"ref":"mE", "precio":"7", "codigo":"005"},
{"ref":"mF", "precio":"15", "codigo":"006"},
{"ref":"mG", "precio":"18", "codigo":"007"}]

crear este archivo CSV:
1
2
3
4
5
6
7
8
ref;precio;codigo
mA;10;001
mB;1;002
mC;13;003
mD;8;004
mE;7;005
mF;15;006
mG;18;007
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import json
 
myJson="""[{"ref":"mA", "precio":"10", "codigo":"001"},
    {"ref":"mB", "precio":"1", "codigo":"002"},
    {"ref":"mC", "precio":"13", "codigo":"003"},
    {"ref":"mD", "precio":"8", "codigo":"004"},
    {"ref":"mE", "precio":"7", "codigo":"005"},
    {"ref":"mF", "precio":"15", "codigo":"006"},
    {"ref":"mG", "precio":"18", "codigo":"007"}]"""
 
"""
Si el json se encuentra en un archivo externo, lo cargariamos así:

with open('miArchivo.json', 'r') as json_file:
    data=json.load(json_file)
"""
 
# cargamos la cadena json en un objeto
data=json.loads(myJson)
 
def readJson(myList):
    """
    Funcion que lee los valores del json.
    
    Parameters:
        mylist object
    Return:
        list
    """
    # header es una lista que contendra la cabecera del archivo csv
    header=[]
    # line es una lista de listas que contendra todas las lineas
    line=[]
    for el in myList:
        line.append([])
        for k,v in el.items():
            line[len(line)-1].append(v)
            if len(header)<len(line[0]):
                header.append(k)
    return [header]+line
 
def saveToCSV(myFile, myList, delimiter=";"):
    """
    Funcion que guarda la lista en el archivo.
    
    Parameters:
        myFile string - nombre del archivo donde guardar el CSV
        myList list - lista de listas con todas las lineas a guardar en el archivo CSV
        delimiter string - delimitador a utilizar entre los valores del archivo CSV
    """
    with open(myFile,"w") as f:
        for el in myList:
            f.write(delimiter.join(el)+"\n")
 
result=readJson(data)
saveToCSV("x.csv",result)



Comentarios sobre la versión: Versión 1.0 (1)

Geova
23 de Agosto del 2019
estrellaestrellaestrellaestrellaestrella
#comentario Amigo tu código no funciono pero le hice unos pequeños cambios y ahí si funciono según yo, gracias por el código.



import json

myJson="""[{"ref":"mA", "precio":"10", "codigo":"001"},
{"ref":"mB", "precio":"1", "codigo":"002"},
{"ref":"mC", "precio":"13", "codigo":"003"},
{"ref":"mD", "precio":"8", "codigo":"004"},
{"ref":"mE", "precio":"7", "codigo":"005"},
{"ref":"mF", "precio":"15", "codigo":"006"},
{"ref":"mG", "precio":"18", "codigo":"007"}]"""

"""
Si el json se encuentra en un archivo externo, lo cargariamos así:

with open('miArchivo.json', 'r') as json_file:
data=json.load(json_file)
"""

# cargamos la cadena json en un objeto
data=json.loads(myJson)

def readJson(myList):
"""
Funcion que lee los valores del json.

Parameters:
mylist object
Return:
list
"""
# header es una lista que contendra la cabecera del archivo csv
header=[]
# line es una lista de listas que contendra todas las lineas
line=[]
for i in myList:
line.append([])
for k,v in i.items():
line[len(line)-1].append(v)
if len(header)<len(line[0]):
header.append(k)
return [header]+line

def saveToCSV(myFile, myList, delimiter=";"):
"""
Funcion que guarda la lista en el archivo.

Parameters:
myFile string - nombre del archivo donde guardar el CSV
myList list - lista de listas con todas las lineas a guardar en el archivo CSV
delimiter string - delimitador a utilizar entre los valores del archivo CSV
"""
with open(myFile,"w") as f:
for i in myList:
f.write(delimiter.join(i)+"\n")

result=readJson(data)
saveToCSV("x.csv",result)
Responder

Comentar la versión: Versión 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s5435