Frage Schreiben in CSV mit Python fügt Leerzeilen hinzu [duplizieren]


Diese Frage hat hier bereits eine Antwort:

Ich versuche, in CSV-Datei zu schreiben, aber dazwischen liegen leere Zeilen. Wie kann ich die leeren Zeilen entfernen?

import csv
b = open('test.csv', 'w')
a = csv.writer(b)
data = [['Me', 'You'],\
        ['293', '219'],\
        ['54', '13']]
a.writerows(data)
b.close()

76
2018-02-04 19:03


Ursprung


Antworten:


Die Art wie du das benutzt csv Modul in Python 3 in mehrfacher Hinsicht geändert (Dokumente)zumindest in Bezug darauf, wie Sie die Datei öffnen müssen. Wie auch immer, sowas

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)

sollte arbeiten.


113
2018-02-04 19:15



Wenn Sie Python 2.x unter Windows verwenden, müssen Sie Ihre Zeile ändern open('test.csv', 'w') zu open('test.csv', 'wb'). Das heißt, Sie sollten die Datei als öffnen Binärdatei.

Wie von anderen angegeben, hat sich die Dateischnittstelle in Python 3.x geändert.


21
2018-02-04 19:05



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])

wird eine Ausgabe wie diese erzeugen

Me You
293 219
13 15

Hoffe das hilft


15
2018-02-04 19:10



Sie müssen die Datei in Binärdatei öffnen b Modus, um in Python 2 auf Leerzeilen zu achten. Dies ist in Python 3 nicht erforderlich.

Also, ändern open('test.csv', 'w') zu open('test.csv', 'wb').


4
2018-02-04 19:06



Pyexcel funktioniert problemlos mit Python2 und Python3.

Schnelle Installation mit Pip:

pip install pyexcel

Danach sind nur 3 Codezeilen und der Job erledigt:

import pyexcel
data = [['Me', 'You'], ['293', '219'], ['54', '13']]
pyexcel.save_as(array = data, dest_file_name = 'csv_file_name.csv')

2
2018-03-23 12:59