2011-11-20 18 views
11

Ho un elenco di numeri che desidero inserire in una singola colonna in un file .csv. Il codice seguente scrive i valori su una singola riga. Come posso cambiare il codice in modo che Python scriva ogni valore su una riga separata? Grazie.Scrittura di un elenco Python in una singola colonna CSV

 with open('returns.csv', 'wb') as f: 
      writer = csv.writer(f) 
      writer.writerow(daily_returns) 
+1

ISTM un file CSV con solo colonna non necessita di csv.writer. Basta usare '' f.writelines ([ret + '\ n' per ret in daily_returns]) '' –

+2

@RaymondHettinger: Forse questo è farfetched, ma i valori 'ret' potrebbero contenere' '\ n'' caratteri o delimitatori che avrebbe bisogno di citazioni – unutbu

risposta

16
with open('returns.csv', 'wb') as f: 
    writer = csv.writer(f) 
    for val in daily_returns: 
     writer.writerow([val]) 
+3

Penso che la chiamata aperta dovrebbe essere solo 'open ('returns.csv', 'w') come f:' – Casey

+0

Grazie. Ho provato lo stesso codice, ma la mia ultima riga ha letto writer.writerow (val) e ho ricevuto l'errore "Sequence Expected." Non avevo capito di aver bisogno delle parentesi. – johnjdc

+0

@Casey: tenderei ad essere d'accordo, ma da quando l'OP lo ha scritto, presumo che sappia cosa sta facendo. – unutbu

0

Solo per la cronaca:

sto usando Python 3.2 e ho potuto ottenere solo quanto segue per lavorare

with open('returns','w')as f: 
    writer=csv.writer(f,lineterminator='\n') 
    for val in returns: 
     writer.writerow([val]) 
+1

In Python 3, dovresti aprire i file usando il parametro 'newline = '', come spiegato in [i documenti] (http://docs.python.org/3.2/library/csv.html#csv.writer). – DSM

2

soluzione alternativa: daily_returns Supponendo è il nome dell'elenco che si desidera scrivere come colonna in un file CSV, dovrebbe funzionare il seguente codice:

with open('return.csv','w') as f: 
    writer = csv.writer(f); 
    writer.writerows(zip(daily_returns)); 
Problemi correlati