2012-05-10 20 views
7

Ho un file abx.csv con tre colonne. Desidero filtrare i dati che sta avendo Application come Central e scrivere nei stesso file .csvCome filtrare dal file CSV usando lo script Python

User ID Name  Application 

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

ho bisogno di scrivere User ID,Name,Apllication in tre colonna stessa lima .csv (modificando il file esistente)

risposta

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: utilizzare il modulo 'csv' per leggere i file separati da delimitatore. –

+0

... risolto ora :) – mshsayem

+0

Quindi avere un upvote. :) –

7

È necessario utilizzare un nome file di output diverso. Anche se vuoi che il nome sia lo stesso, dovresti usare un nome temporaneo e infine rinominare il file. Altrimenti leggere prima il file nella memoria

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

Non è necessario nidificare i gestori di contesto 'with' su livelli di rientro separati. Invece, esegui 'con open ('infile', 'r), open (' outfile ',' w ') come fin, fout:'. –

+0

Buon punto, lo aggiusterò. Grazie – San4ez

+0

In realtà, si noti anche che sarà necessario specificare alcuni parametri di dialetto qui. 'delimiter =" "' al minimo. –

Problemi correlati