Konwertowanie listy do csv

0

Mam listę, której elementami są zdania (wycinek poniżej).

screenshot-20181219212419.png

Chciałbym zapisać ją do formatu csv. Próbowałem w następujący sposób:

import csv

with open("output.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerows(corpus)

W efekcie otrzymałem coś takiego:

screenshot-20181219212732.png

Co zrobić, aby w każdym wierszu zapisało się całe zdanie, bez podziału na litery?

0

Daj:
writer.writerow(corpus)

0
lion137 napisał(a):

Daj:
writer.writerow(corpus)

Przy takim rozwiązaniu nie rozbija mi zdań na litery, ale za to wszystko zapisuje się w jednym wierszu:
screenshot-20181220052455.png

1

Jak wygląda Twoja lista (w programie)? writerow() dosłownie Tworzy jeden rząd z podanymi danymi. Więc jak mu podasz listę [row1, row2,row3] to zapisze to wszystko do jednego row traktując row1, row2..jak kolejne kolumny. Możesz np. ziterować Twoją listę:

for row in your_list:
    csv.writerow(row)

W Twoim pierwszym poście podejrzewam, że podałeś corpus, który jest stringiem (np. corpus = 'abcdef,gtd') a csvwriter traktuje to jako listę (czyli iteruje a,b,c,d,e..). W takim przypadku możesz podzielić corpus na poszczególne rzędy dzieląc na delimetrze - np. my_list = corpus.split(',')

0
AsterFV napisał(a):

Jak wygląda Twoja lista (w programie)? writerow() dosłownie Tworzy jeden rząd z podanymi danymi. Więc jak mu podasz listę [row1, row2,row3] to zapisze to wszystko do jednego row traktując row1, row2..jak kolejne kolumny. Możesz np. ziterować Twoją listę:

for row in your_list:
    csv.writerow(row)

W Twoim pierwszym poście podejrzewam, że podałeś corpus, który jest stringiem (np. corpus = 'abcdef,gtd') a csvwriter traktuje to jako listę (czyli iteruje a,b,c,d,e..). W takim przypadku możesz podzielić corpus na poszczególne rzędy dzieląc na delimetrze - np. my_list = corpus.split(',')

Przy próbie podziału dostaję błąd: 'list' object has no attribute 'split'.
Z kolei po iteracji

with open("output.csv", "w", newline="") as f:
    for row in corpus:
        writer = csv.writer(f)
        writer.writerow(corpus)

otrzymałem coś takiego:
screenshot-20181221205754.png

w sumie 445 wierszy, czyli tyle ile jest elementów w liście.

1
with open("output.csv", "w", newline="") as f:
    for row in corpus:
        writer = csv.writer(f)
        writer.writerow(corpus)

Nic dzinwego, przecież tutaj:

writer.writerow(corpus)

zapisuejsz całą listę.
daj tam

writer.writerow(row)

I powinno działać.
czyli coś takiego:

 with csv.writer(open("output.csv", "w", newline="")) as writer:
     for row in corpus:
         writer.writerow(row)

No i zmieniłem też lokację utworzenia writera, żeby nie tworzyć go przy każdej iteracji po pętli - bez sensu tak co chwile zamykać/otwierać plik.

1 użytkowników online, w tym zalogowanych: 0, gości: 1