2013-01-03 20 views
19

Korzystając z Pythona, piszę dane z listy do pliku .csv, wierszowo.Zapisywanie danych z listy Pythona do csv z wierszami

Kod:

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) 

Wynik: Dane są zapisywane do pliku csv, ale każda litera jest drukowany w każdej kolumnie.

Na przykład: typ jest zapisywany jako "t" w jednej kolumnie, "y" w następnej kolumnie i tak dalej. Potrzebuję całego słowa w jednej kolumnie. Czy ktoś może wskazać, jaką zmianę mogę wprowadzić?

Dzięki

+1

writerow() pisze, jak sama nazwa jasno wskazuje dane dla jednej * * rzędzie. Sprawdź najpierw dokumentację * i * przykłady. W dokumentacji jest jasne, że musisz przekazać dane dla wszystkich kolumn dla jednego wiersza do pisiterow(). –

+2

Nie sądzę, aby to pytanie zasługiwało na odwagę. To jest wyraźnie napisane pytanie. Jedynym błędem, jaki wykonał OP, prawdopodobnie nie było pełne zrozumienie dokumentacji modułu csv. – jdi

+0

Przykłady w dokumentacji są wystarczająco jasne, aby zobaczyć, jak działa interfejs API .... kwestia myślenia –

Odpowiedz

32

Zmień writer.writerow(data) do writer.writerow([data]).

.writerow przyjmuje wartość iteracyjną i używa każdego elementu tej iteracji dla każdej kolumny. Jeśli użyjesz listy zawierającej tylko jeden element, zostanie ona umieszczona w jednej kolumnie.

Należy również zrestrukturyzować swoją pętlę:

for word in header: 
    writer.writerow([word]) 
Powiązane problemy