Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: colcrt en 4 Enero 2021, 22:25 pm



Título: pasar datos de un archivo csv a otro con python
Publicado por: colcrt en 4 Enero 2021, 22:25 pm
hola, verán tengo un archivo con datos de partidos de diferentes ligas y lo que quiero es capturar los datos de una sola liga en un archivo csv diferente, he estado intentando pero la documentación de python en relacion al manejo de archivos es muy limitada o insuficiente, si alguno muy amable me pudiera ayudar


Título: Re: pasar datos de un archivo csv a otro con python
Publicado por: EdePC en 5 Enero 2021, 23:16 pm
Se me ocurre abrir el .csv como Objeto donde cada línea sería un Diccionario e ir iterando línea a línea creando/abriendo un archivo en modo Append (agregar al final) con el nombre de la Liga para luego agregar en él los Campos del Diccionario/Línea actual

partidos.csv
Citar
columna1,columna2,columna3,columna4,columna5,liga
dato1,dato2,dato3,dato4,dato5,liga1
dato1,dato2,dato3,dato4,dato5,liga1
dato1,dato2,dato3,dato4,dato5,liga1
dato1,dato2,dato3,dato4,dato5,liga2
dato1,dato2,dato3,dato4,dato5,liga3
dato1,dato2,dato3,dato4,dato5,liga2
dato1,dato2,dato3,dato4,dato5,liga1

Código
  1. import csv, os
  2.  
  3. with open('partidos.csv') as f :
  4.  df = csv.DictReader(f)
  5.  for row in df :
  6.    fieldnames = list(row)
  7.    exists = os.path.exists(row['liga'] + '.csv')
  8.    with open(row['liga'] + '.csv', 'a', newline='') as l :
  9.      writer = csv.DictWriter(l, fieldnames=fieldnames)
  10.      if not exists :
  11.        writer.writeheader()
  12.      writer.writerow(row)

1. Importo csv y os
3. Abro el archivo partidos.csv bajo el nombre de "f" en modo solo teto de lectura (por defecto)
4. Creo el Objeto DictReader a partir del archivo leído
5. Itero fila a fila (cada fila es un Diccionario) el Objeto DictReader
6. Creo un Diccionario con la primera línea del archivo csv que se supone es la cabecera de títulos (fielnames)
7. Creo una variable Boolean para comprobar si existe o no el archivo con el nombre de la Liga
8. Creo o Abro un archivo csv con el nombre igual a la Liga
9. Creo mi Objeto DictWriter para poder escribir líneas (cada línea es un Diccionario) en el archivo
10. y 11. Si el archivo no existía le agrego los títulos de columna (fieldnames)
12. Inserto la línea con los datos del Diccionario Fila

Aunque siempre se pueden solo extraer las Columnas (fielnames) que uno desee y no todas ...


Título: Re: pasar datos de un archivo csv a otro con python
Publicado por: colcrt en 27 Enero 2021, 05:56 am
gracias bro, me ha servido mucho  ;-)