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.

Ordenar por columna en un archivo CSV y escribir en un nuevo archivo CSV en Python

Mi código:

import csv
import operator

primer_archivo_csv = open('/Users/jawadmrahman/Downloads/account-cleanup-3 array/example.csv', 'r+')
csv_ordenado = csv.reader(primer_archivo_csv, delimiter=',')
sort = sorted(csv_ordenado, key=operator.itemgetter(0))
archivo_csv_ordenado = open('new_sorted2.csv', 'w+', newline='')
escribir = csv.writer(archivo_csv_ordenado)
for cada_linea in sort:
    print(cada_linea)
    escribir.writerows(cada_linea)

Tengo un ejemplo de archivo csv:

enter image description here

Quiero ordenarlo por la primera columna y obtener los resultados de esta manera:
1,9
2,17,
3,4
7,10

Con el código publicado anteriormente, esto es lo que estoy obteniendo ahora:

enter image description here

¿Cómo puedo solucionarlo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    En lugar de usar write.writerows(eachline) en el bucle for, usa write.writerow(eachline).

    El método writerows() escribe una secuencia de filas, donde cada fila es una lista de valores. En tu código, eachline es una lista de valores que representa una fila, por lo que deberías usar el método writerow() en su lugar.

    Aquí está el código corregido:

    import csv
    import operator
    
    first_csv_file = open('/Users/jawadmrahman/Downloads/account-cleanup-3 array/example.csv', 'r+')
    csv_sort = csv.reader(first_csv_file, delimiter=',')
    sort = sorted(csv_sort, key=operator.itemgetter(0))
    sorted_csv_file = open('new_sorted2.csv', 'w+', newline='')
    write = csv.writer(sorted_csv_file)
    for eachline in sort:
        print(eachline)
        write.writerow(eachline)
    

    Esto debería darte el resultado deseado.

Comments are closed.