2012-05-10 66 views
7

Tengo el archivo abx.csv con tres columnas. Me gustaría filtrar los datos que está teniendo Application como Central y escribirlo en mismo archivo .csvCómo filtrar desde archivo CSV usando Python Script

User ID Name  Application 

001  Ajohns  ABI 
002  Fjerry  Central 
900  Xknight  RFC 
300  JollK  QDI 
078  Demik  Central 

necesito escribir User ID,Name,Apllication en tres columnas en el mismo archivo .csv (modificando el archivo existente)

Respuesta

6
import csv 
reader = csv.reader(open(r"abx.csv"),delimiter=' ') 
filtered = filter(lambda p: 'Central' == p[2], reader) 
csv.writer(open(r"abx.csv",'w'),delimiter=' ').writerows(filtered) 
+0

-1: utilice el módulo 'csv' para leer los archivos separados por delimitadores. –

+0

... arreglado ahora :) – mshsayem

+0

Luego, tenga un voto favorable. :) –

7

Debe usar un nombre de archivo de salida diferente. Incluso si desea que el nombre sea el mismo, debe usar algún nombre temporal y finalmente cambiar el nombre del archivo. De lo contrario, debe leer el archivo en la memoria al principio

import csv 
with open('infile','r'), open ('outfile','w') as fin, fout: 
    writer = csv.writer(fout, delimiter=' ')    
    for row in csv.reader(fin, delimiter=' '): 
     if row[2] == 'Central': 
      writer.writerow(row) 
+3

No necesita anidar esos gestores de contexto 'con' en niveles de sangría separados. En cambio, haz 'con open ('infile', 'r), open (' outfile ',' w ') como fin, fout:'. –

+0

Buen punto, lo arreglaré. Gracias – San4ez

+0

En realidad, también tenga en cuenta que va a necesitar especificar algunos parámetros dialectales aquí. 'delimiter =" "' como mínimo. –

Cuestiones relacionadas