2012-05-10 14 views
7

Mam plik abx.csv mający trzy kolumny. Chciałbym, aby filtrować dane, które jest o Application jak Central i zapisać go w tym samym pliku .csvJak filtrować z pliku CSV przy użyciu skryptu Python

User ID Name  Application 

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

muszę napisać User ID,Name,Apllication w trzeciej kolumnie w tym samym pliku .csv (modyfikując istniejący plik)

Odpowiedz

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: Użyj modułu 'csv', aby odczytać pliki oddzielone separatorami. –

+0

... naprawiono teraz :) – mshsayem

+0

Potem przekaż wiadomość. :) –

7

Powinieneś użyć innej nazwy pliku wyjściowego. Nawet jeśli chcesz, aby nazwa była taka sama, powinieneś użyć tymczasowej nazwy i ostatecznie zmienić nazwę pliku. W przeciwnym razie musisz najpierw wczytać plik do pamięci:

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

Nie musisz zagnieżdżać tych menedżerów kontekstu 'z' na osobnych poziomach wcięć. Zamiast tego wykonaj 'with open ('infile', 'r), open (' outfile ',' w ') jako fin, fout:'. –

+0

Dobra uwaga, naprawię to. Dziękujemy – San4ez

+0

W rzeczywistości, zwróć też uwagę, że będziesz musiał podać tutaj pewne parametry dialektu. 'delimiter =" "' co najmniej. –

Powiązane problemy