2011-08-30 54 views
6

Tengo un archivo CSV con 5 columnas. Usando Python, ¿cómo puedo eliminar la última columna (header5 en el ejemplo)? ¿Me falta una forma sencilla o tengo que recorrer todas las filas en el archivo CSV y eliminar cada valor de la última columna (lo que aún podría dejarme con la coma anterior no deseada)?Eliminar o eliminar la última columna del archivo CSV con Python

No veo nada relacionado con esto en el módulo CSV ni en ningún otro lugar en las interwebs, por lo que cualquier ayuda es muy apreciada.

header1,header2,header3,header4,header5 
value1,value2,value3,value4,value5 
value1,value2,value3,value4,value5 

Respuesta

12

Utilice csv module. Al escribir una fila, utilice row[:-1] a cortar el último elemento:

import csv 

with open(filename,"r") as fin: 
    with open(outname,"w") as fout: 
     writer=csv.writer(fout) 
     for row in csv.reader(fin): 
      writer.writerow(row[:-1]) 
1

Incluso si usted no utiliza el módulo CSV, el camino lógico y sano es leer el archivo de fila por fila, partirlos en coma e imprima los elementos 1 a 4 con join. por ejemplo

for line in open("file"): 
    print ','.join(line.split(",")[:-1]) 

O simplemente mediante la indexación de cadena simple

for line in open("file"): 
    print line[ : line.rindex(",") ] 
+3

Esto puede golpear problemas si la última columna de datos pasa a contener una coma. Usar el módulo CSV debería evitar esto. –

Cuestiones relacionadas