2013-01-03 8 views
19

Utilizzando python, sto scrivendo i dati da un elenco in un file .csv, in termini di righe.scrittura di dati da un elenco python a csv row-wise

Codice:

writer=csv.writer(open(filepath,'wb')) 
header=['type','id','numberOfUpdates','isPingEnabled','lastUpdated'] 
length_list=len(header) 
i=0 

while i!=length_list : 
    data=header[i] 
    print data 
    i=i+1 
    writer.writerow(data) 

Risultato: i dati vengono scritti in un file CSV, ma ogni lettera è stampata in ogni colonna.

Ad esempio: il tipo è scritto come 't' in una colonna, 'y' nella colonna successiva e così via. Ho bisogno dell'intera parola in una colonna. Qualcuno può indicare che cosa posso fare un cambiamento?

Grazie

+1

writerow() scrive come il nome indica chiaramente i dati per * uno * fila. Si prega di controllare prima la documentazione * e * esempi. La documentazione è chiara sul fatto che è necessario passare i dati per tutte le colonne per una riga a writerow(). –

+2

Non credo che questa domanda meriti un downvote. È una domanda chiaramente scritta. L'unico difetto che l'OP ha creato probabilmente non comprendeva completamente la documentazione del modulo csv. – jdi

+0

Gli esempi nella documentazione sono abbastanza chiari per vedere come funziona l'API .... una questione di pensiero –

risposta

32

Change writer.writerow(data) a writer.writerow([data]).

.writerow prende un iterabile e utilizza ogni elemento di quello iterabile per ogni colonna. Se si utilizza un elenco con un solo elemento, verrà inserito in una singola colonna.

Si dovrebbe anche ristrutturare il ciclo:

for word in header: 
    writer.writerow([word]) 
Problemi correlati