2013-08-20 19 views
5

Sto provando a scrivere un paio di tuple in un file csv.Come scrivere tuple in un file csv in python senza riga vuota

Questo è quello che ho provato:

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() 

Questo ha funzionato, ma non come previsto. Notare le righe vuote in un foglio di calcolo:

screenshot of spreadsheet rows showing unwanted blank lines

e in un editor di testo, il file si presenta come:

0,1,2
< riga vuota >
3 , 4,5
< riga vuota >

(totale 4 righe)

Come posso scrivere senza queste righe vuote?

+0

In realtà il tuo codice funziona perfettamente bene per me? C'è qualcos'altro che non hai mostrato nel tuo esempio? –

+0

senza usare csv, cambia "w" in "a". Quindi out_file.write ("0,1,2 \ n") e così via – Jean

+0

@ViktorKerkez No, questo è esattamente quello che ho fatto. –

risposta

7

Il modulo csv fa il suo trattamento end-of-line, e richiede il file di output per essere aperto in modo specifico:

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

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

... it deve essere aperto con il flag "b" sulle piattaforme in cui ciò fa la differenza.

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

... dovrebbe essere aperto con la nuova linea = '' ...

vostri righe vuote sono dovute al default "dialettale" del csv il modulo è excel. Questo si traduce avanzamento riga \n caratteri in ritorno a capo/avanzamento riga \r\n, ma aprendo il file di output in modalità testo "su piattaforme dove questo fa la differenza" (Windows) anche traduce \n-\r\n, con conseguente \r\r\n. Ciò causa le tue righe vuote in più.

Problemi correlati