2011-11-20 25 views
11

Tengo una lista de números que quiero poner en una sola columna en un archivo .csv. El siguiente código escribe los valores en una sola fila. ¿Cómo puedo cambiar el código para que Python escriba cada valor en una fila separada? Gracias.Escribir una lista de Python en una sola columna de CSV

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

ISTM un archivo CSV con una sola columna no necesita un csv.writer. Solo use '' f.writelines ([ret + '\ n' para ret en daily_returns]) '' –

+2

@RaymondHettinger: Quizás esto es descabellado, pero los valores 'ret' podrían contener caracteres' '\ n'' o delimitadores que necesitaría citar. – unutbu

Respuesta

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

Creo que la llamada abierta solo debe ser 'abierta ('returns.csv', 'w') como f:' – Casey

+0

Gracias. Probé el mismo código, pero mi última línea decía writer.writerow (val) y recibí el error "Sequence Expected". No me di cuenta de que necesitaba los corchetes. – johnjdc

+0

@Casey: Tiendo a estar de acuerdo, pero desde que el OP lo escribió, supongo que sabe lo que hace. – unutbu

0

Sólo para que conste:

estoy usando Python 3.2 y sólo podía conseguir lo siguiente para trabajar

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

In Python 3, debe abrir archivos usando el parámetro 'newline = ''', como se explica en [los documentos] (http://docs.python.org/3.2/library/csv.html#csv.writer). – DSM

2

Solución alternativa: daily_returns suponiendo que se la nombre de la lista que desea escribir como columna en un archivo CSV, el siguiente código debería funcionar:

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