2015-03-27 10 views
7

Vorrei salvare un elenco di pitone in un file .csv, per esempio ho una lista come questa:Come salvare un elenco come file .csv con python con nuove linee?

['hello','how','are','you'] 

Vorrei salvare in questo modo:

colummn, 
hello, 
how, 
are, 
you, 

ho provato la seguente:

myfile = open('/Users/user/Projects/list.csv', 'wb') 
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL,'\n') 
wr.writerow(pos_score) 
+0

si desidera scrivere una nuova riga per ogni elemento nell'elenco? – cmidi

+0

Thsnks per il feed, Sì, mi piacerebbe dargli la nuova riga per ogni elemento nell'elenco. @ cmidi – skwoi

+0

perché stai aggiungendo una virgola finale? –

risposta

17

uso panda to_csv (http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.to_csv.html)

>>> import pandas as pd 
>>> df = pd.DataFrame(some_list, columns=["colummn"]) 
>>> df.to_csv('list.csv', index=False) 
+0

Grazie per l'aiuto. Come posso aggiungere un ',' alla fine di ogni parola ?. Pensi che avrò problemi a leggere questo tipo di elenco poiché con i panda visto che è un .csv? – skwoi

+0

No, i panda si comportano bene con CSV. Basta usare il suo metodo read_csv. se davvero bisogno '' alla fine della linea, eseguire:. DF [ 'colummn'] = df [ 'colummn'] map (lambda x: x + "") Tuttavia formato csv non suppone file per avere ',' alla fine della riga, solo tra le colonne. Aggiungere "," dopo le parole significherebbe che esiste una seconda colonna (ciò che non è vero nel tuo caso). – grechut

2

Si può solo passare questo come il valore di un dict con chiave 'colonna' a un costruttore dataframe e quindi chiamare to_csv sulla df:

In [43]: 

df = pd.DataFrame({'column':['hello','how','are','you']}) 
df 
Out[43]: 
    column 
0 hello 
1 how 
2 are 
3 you 
In [44]: 

df.to_csv() 
Out[44]: 
',column\n0,hello\n1,how\n2,are\n3,you\n' 
+0

Grazie per l'aiuto – skwoi

6

Se si desidera che tutte le parole su linee diverse è necessario impostare il deliiter a \n:

l = ['hello','how','are','you'] 
import csv 

with open("out.csv","w") as f: 
    wr = csv.writer(f,delimiter="\n") 
    wr.writerow(l) 

Uscita:

hello 
how 
are 
you 

Se si desidera una virgola finale:

with open("out.csv","w") as f: 
    wr = csv.writer(f,delimiter="\n") 
    for ele in l: 
     wr.writerow([ele+","]) 

uscita:

hello, 
how, 
are, 
you, 

Suggerirei appena iscritto gli elementi senza la virgola finale, non c'è alcun vantaggio ad avere una virgola finale, ma può ben causa hai problemi dopo.

+1

Grazie per l'aiuto! – skwoi

Problemi correlati