41
Xử lý tệp CSV với csv.DictReader thật tuyệt - nhưng tôi có tệp CSV có dòng chú thích trong (được chỉ ra bởi băm ở đầu dòng), ví dụ:Python: bỏ qua các dòng chú thích được đánh dấu bằng # trong csv.DictReader
# step size=1.61853 val0,val1,val2,hybridisation,temp,smattr 0.206895,0.797923,0.202077,0.631199,0.368801,0.311052,0.688948,0.597237,0.402763 -169.32,1,1.61853,2.04069e-92,1,0.000906546,0.999093,0.241356,0.758644,0.202382 # adaptation finished
Mô-đun csv doesn't include any way to skip such lines.
Tôi có thể dễ dàng làm điều gì đó hacky, nhưng tôi tưởng tượng có một cách tốt đẹp để bọc một csv.DicReader xung quanh một số đối tượng iterator khác, mà tiền xử lý để loại bỏ các dòng.
Điều đó sẽ đọc toàn bộ tập tin vào bộ nhớ. Nếu nó không phải là quá lớn thì không có vấn đề, nếu không bạn có thể muốn sử dụng một biểu thức máy phát điện hoặc 'itertools.ifilter()'. – Duncan
... hoặc biểu thức trình tạo: 'csv.DictReader (hàng cho hàng trong fp nếu không row.startswith ('#'))' –
@Duncan không cần itertools trong Python3.6, dưới dạng 'bộ lọc() 'sẽ trả về một trình lặp theo mặc định, do đó tệp sẽ không được nạp vào bộ nhớ. –