2013-08-20 31 views
5

Tôi đang cố gắng viết một vài bộ dữ liệu vào tệp csv.Cách viết tuples trong tệp csv trong python không có dòng trống

Đây là những gì tôi đã cố gắng:

import csv 
out_file = open('csv_write.csv', 'w') 
writer = csv.writer(out_file) 
writer.writerow((0, 1, 2)) 
writer.writerow((3, 4, 5)) 
out_file.close() 

này làm việc, nhưng không như mong đợi. Chú ý các hàng trống trong một bảng tính:

screenshot of spreadsheet rows showing unwanted blank lines

và trong một trình soạn thảo văn bản, file hình như:

0,1,2
< dòng trống >
3 , 4,5
< dòng trống >

(tổng 4 hàng)

Làm thế nào tôi có thể viết không có những hàng trống?

+0

Thực ra mã của bạn đang hoạt động hoàn toàn tốt cho tôi? Có cái gì khác mà bạn đã không hiển thị trong ví dụ của bạn? –

+0

mà không sử dụng csv, thay đổi 'w' thành 'a'. Sau đó out_file.write ("0,1,2 \ n") và như vậy – Jean

+0

@ViktorKerkez Không, đây chính xác là những gì tôi đã làm. –

Trả lời

7

Module csv làm riêng của mình end-of-line xử lý, và đòi hỏi các tập tin đầu ra sẽ được mở trong một cách cụ thể:

out_file = open('csv_write.csv', 'wb')    # Python 2.x 
out_file = open('csv_write.csv', 'w', newline='') # Python 3.x 

Reference http://docs.python.org/2.7/library/csv.html?highlight=csv#csv.writer:

... nó phải được mở bằng cờ 'b' trên các nền tảng tạo nên sự khác biệt.

http://docs.python.org/3.3/library/csv.html?highlight=csv#csv.writer:

... nó phải được mở ra với newline = '' ...

dòng trống của bạn là do mặc định "phương ngữ" của csv mô-đun là excel. Điều này được chuyển linefeed \n nhân vật vào vận chuyển trở lại/linefeed \r\n, nhưng mở tập tin đầu ra trong chế độ văn bản "trên nền tảng nơi mà làm cho một sự khác biệt" (Windows) cũng dịch \n-\r\n, dẫn đến \r\r\n. Điều này làm cho các hàng trống thừa của bạn.

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