2015-03-27 3 views
7

Chciałbym zapisać listę Pythona w pliku .csv, na przykład mam listy tak:Jak zapisać listę jako plik .csv z pythonem z nowymi liniami?

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

chciałbym zapisać to tak:

colummn, 
hello, 
how, 
are, 
you, 

próbowałem następujące:

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

Chcesz napisać nowy wiersz dla każdego elementu na liście? – cmidi

+0

Thsnks dla kanału, Tak, chciałbym nadać mu nowy wiersz dla każdego elementu na liście. @cmidi – skwoi

+0

dlaczego dodajesz przecinek końcowy? –

Odpowiedz

17

użytku pandy 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

Dzięki za pomoc. Jak mogę dodać "," na końcu każdego słowa ?. Czy myślisz, że będę miał problemy z czytaniem tego rodzaju listy, ponieważ w przypadku pand, ponieważ jest to .csv? – skwoi

+0

Nie, pandy radzą sobie dobrze z csv. Po prostu użyj jego metody read_csv. Jeśli naprawdę potrzebujesz "," na końcu linii, uruchom: df ['colummn'] = df ['colummn']. Map (lambda x: x + ",") Jednak format CSV nie zakłada plik ma "," na końcu wiersza, tylko pomiędzy kolumnami. Dodanie "," po słowach oznaczałoby, że istnieje druga kolumna (co nie jest prawdą w twoim przypadku). – grechut

2

można po prostu przekazać to jako wartości dict z kluczem „kolumny” do konstruktora DataFrame a następnie zadzwonić to_csv na 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

Dzięki za pomoc – skwoi

6

Jeśli chcesz, aby wszystkie słowa na różnych liniach trzeba ustawić deliiter do \n:

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

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

Wyjście:

hello 
how 
are 
you 

Jeśli chcesz przecinek spływu:

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

wyjściowa:

hello, 
how, 
are, 
you, 

Polecam tylko pisanie elementów bez przecinka wleczonego, nie ma przewagę posiadania przecinek trailing ale może również powodować później problemy.

+1

Dzięki za pomoc! – skwoi