es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Multiples comprensiones de lista devuelven una lista vacía con el administrador de contexto.

Estoy leyendo un archivo csv comprimido y quiero extraer sólo columnas específicas sin usar pandas. Mi código actual sólo devuelve una lista para la primera comprensión de lista, pero no para las siguientes. ¿Cómo puedo extraer múltiples columnas mientras uso un gestor de contexto?

Archivo de entrada:

col1,col2,col3
1,2,3
a,b,c

Mi código

import gzip
import csv
import codecs

with gzip.open(r”myfile.csv.gz”, “r”) as f:
content = csv.reader(codecs.iterdecode(f, “utf-8”))

col_2 = [row[1] for row in content] # Returns [2, "b"]
col_3 = [row[2] for row in content] # Returns []

Salida esperada:

col_2: [2, “b”]
col_3: [3, “c”]

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Puede utilizar la función next() para omitir la fila de encabezado antes de iterar a través del contenido:

    import gzip
    import csv
    import codecs
    
    with gzip.open(r"myfile.csv.gz", "r") as f:
        content = csv.reader(codecs.iterdecode(f, "utf-8"))
        next(content) # Omitir la fila de encabezado
    
        col_2 = [row[1] for row in content] # Retorna [2, "b"]
        col_3 = [row[2] for row in content] # Retorna [3, "c"]
    

    Salida esperada:

    col_2: [2, "b"]
    col_3: [3, "c"]
    

Comments are closed.