2012-05-10 35 views
7

Tôi có tệp abx.csv có ba cột. Tôi muốn lọc dữ liệu đó là có Application như Central và viết nó trong tập tin .csv cùngCách Lọc từ tệp CSV sử dụng Tập lệnh Python

User ID Name  Application 

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

tôi cần phải viết User ID,Name,Apllication trong ba cột trong tệp .csv cùng (sửa đổi các tập tin hiện có)

Trả lời

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: Sử dụng mô-đun 'csv' để đọc các tệp được phân tách bằng dấu phân cách. –

+0

... đã được chỉnh sửa ngay bây giờ :) – mshsayem

+0

Sau đó, hãy cập nhật. :) –

7

Bạn nên sử dụng tên tệp đầu ra khác nhau. Ngay cả khi bạn muốn tên là như nhau, bạn nên sử dụng một số tên tạm thời và cuối cùng đổi tên tập tin. Nếu không, bạn phải đọc tệp vào bộ nhớ lúc đầu tiên

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

Bạn không cần lồng các trình quản lý ngữ cảnh 'with' vào các mức thụt lề riêng biệt. Thay vào đó, làm 'với mở ('infile', 'r), mở (' outfile ',' w ') như vây, fout:'. –

+0

Điểm tốt, tôi sẽ sửa nó. Cảm ơn bạn – San4ez

+0

Thực ra, cũng lưu ý rằng bạn sẽ cần chỉ định một số thông số phương ngữ tại đây. 'delimiter =" "' ở mức tối thiểu. –

Các vấn đề liên quan