Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: juanfelr en 3 Noviembre 2022, 03:57 am



Título: python - ordenar lista importada desde archivo csv
Publicado por: juanfelr en 3 Noviembre 2022, 03:57 am
Saludos a toda la comunidad, espero se encuentren muy bien.

llevo un rato intentando resolver este problema, pero no he logrado el resultado con la ultima parte.

he intentado imprimir en pantalla la información dentro de un archivo csv que contiene tres columnas:
nombre, valor1,valor2.

el inconveniente es que en cada fila imprime los valores en cualquier orden, no respeta el orden según los encabezados del csv.

comparto el código en caso de que alguién me pueda orientar con la solución.

Código:
import sys
import csv

def main():

    if len(sys.argv)<2:
        sys.exit("Too few command-line arguments")
    elif len(sys.argv)>2:
        sys.exit("Too many command-line arguments")
    elif ".csv" not in sys.argv[1]:
        sys.exit("Not a CSV file")
    else:
        try:

            doc=sys.argv[1]

            filas=[]

            with open(doc,"r") as file:

                headers=next(csv.reader(file))


                for line in file:
                    menu = line.rstrip().split(",")

                    filas.append({menu[0], menu[1], menu[2]})

                print(filas)

        except FileNotFoundError:
            sys.exit("File does not exist")

main()

No entiendo por qué me almacena en desorden cuando estoy especificando al momento de adicionar los valores el orden correcto: filas.append({menu[0], menu[1], menu[2]})

estaré agradecido si me ueden indicar en donde estoy mal o que me puede faltar.

muchas gracias.

P.D:Por favor disculpen el desorden en el codigo, soy novato en el tema.


Título: Re: python - ordenar lista importada desde archivo csv
Publicado por: juanfelr en 4 Noviembre 2022, 02:56 am
estimados miembros del foro.

ya lo solucioné, era tan simple que no la había visto. reemplacé la linea:

filas.append({menu[0], menu[1], menu[2]})

por:

filas.append(menu)

lo había intentado antes, pero sin omitir las llaves {} y me salía error.

Espero sea de utilidad este descache de mi parte ara alguien más.