Zapis do pliku CSV za pomocą Pythona dodaje puste linie [duplikat]

to pytanie ma już odpowiedzi tutaj : plik CSV napisany Pythonem ma puste linie między wierszami (9 odpowiedzi) Zamknięty 4 lata temu .

Próbuję zapisać do pliku CSV, ale pomiędzy nimi są puste wiersze. Jak mogę usunąć puste wiersze?

import csv
b = open('test.csv', 'w')
a = csv.writer(b)
data = [['Me', 'You'],\
        ['293', '219'],\
        ['54', '13']]
a.writerows(data)
b.close()
Author: davidism, 2013-02-04

5 answers

Sposób korzystania z modułu csv zmienił się w Pythonie 3 pod kilkoma względami (docs), przynajmniej w odniesieniu do tego, jak trzeba otworzyć plik. W każdym razie coś w stylu

import csv
with open('test.csv', 'w', newline='') as fp:
    a = csv.writer(fp, delimiter=',')
    data = [['Me', 'You'],
            ['293', '219'],
            ['54', '13']]
    a.writerows(data)
Powinno zadziałać.
 116
Author: DSM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-04 19:15:43

Jeśli używasz Pythona 2.x w systemie Windows należy zmienić linię open('test.csv', 'w') na open('test.csv', 'wb'). Oznacza to, że należy otworzyć plik jako plik binarny .

Jednak, jak stwierdzili inni, interfejs plików zmienił się w Pythonie 3.x.

 21
Author: Wilduck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-04 19:27:14
import csv

hello = [['Me','You'],['293', '219'],['13','15']]
length = len(hello[0])

with open('test1.csv', 'wb') as testfile:
    csv_writer = csv.writer(testfile)
    for y in range(length):
        csv_writer.writerow([x[y] for x in hello])

Wygeneruje takie wyjście

Me You
293 219
13 15

Hope this helps

 15
Author: John Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-23 19:55:07

Musisz otworzyć plik w trybie binarnym b, aby zająć się pustymi liniami w Pythonie 2. Nie jest to wymagane w Pythonie 3.

Więc zmień open('test.csv', 'w') na open('test.csv', 'wb').

 5
Author: Aditya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-04 19:06:57

Pyexcel działa świetnie zarówno z Python2, jak i Python3 bez problemów.

Szybka instalacja za pomocą pip:

pip install pyexcel

Po tym, tylko 3 linijki kodu i zadanie jest wykonane:

import pyexcel
data = [['Me', 'You'], ['293', '219'], ['54', '13']]
pyexcel.save_as(array = data, dest_file_name = 'csv_file_name.csv')
 3
Author: Danny Lessio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-31 15:41:17