Vermeiden Sie das Phänomen, dass bei der Ausgabe von Python CSV Leerzeilen eingefügt werden

Einführung

Als ich versuchte, CSV von Python unter Windows auszugeben, wurde für jede Zeile eine leere Zeile eingefügt, sodass ich eine Problemumgehung hinterlassen habe.

CSV ausgeben


a,b,c

d,e,f

g,h,i

Umgebung

Code in Frage


import csv

with open("./test.csv", "w") as f:
    writer = csv.writer(f)
    writer.writerow(["a", "b", "c"])
    writer.writerow(["d", "e", "f"])
    writer.writerow(["g", "h", "i"])

Lösung

Ich kann mich nicht erinnern, Mac und Linux geworden zu sein, daher dachte ich, es sei ein Problem in der Windows-Umgebung. Es wird angenommen, dass CRLF eine Wirkung hat, daher werden wir versuchen, CRLF zu vermeiden.

open: newline Ein Argument, das das Konvertierungsziel des Zeilentrennzeichens angibt. Wenn nicht angegeben, wird es in den Standardzeilenumbruch des Systems konvertiert. Im Fall von Windows ist es CRLF, aber da Leerzeilen auftreten, geben Sie "" oder "\ n" an. Wenn Sie '' oder '\ n' angeben, wird die Konvertierung nicht durchgeführt und die Ausgabe bleibt unverändert.


import csv

with open("./test.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["a", "b", "c"])
    writer.writerow(["d", "e", "f"])
    writer.writerow(["g", "h", "i"])

writer: lineterminator Ein Argument, das das Ende jeder Zeile darstellt. Der Standardwert ist "\ r \ n". Geben Sie also "\ n" an.


with open("./test.csv", "w") as f:
    # writer = csv.writer(f)
    writer = csv.writer(f, lineterminator="\n")
    writer.writerow(["a", "b", "c"])
    writer.writerow(["d", "e", "f"])
    writer.writerow(["g", "h", "i"])

Bemerkungen

Im Fall von Python2.7 gibt es keine neue Zeile, daher denke ich, dass dies eine Möglichkeit sein wird, den Zeilenabschluss von csv.writer zu verwenden. Wenn es sich um io.open handelt, gibt es ein Zeilenumbruchargument, aber die zu schreibende Zeichenfolge wird bei der Codierung abgefangen, und ich habe sie nicht im Detail untersucht.

Referenz

https://qiita.com/ryokurta256/items/defc553f5165c88eac95 Python: open: newline Python: csv: lineterminator

Recommended Posts

Vermeiden Sie das Phänomen, dass bei der Ausgabe von Python CSV Leerzeilen eingefügt werden
Importieren Sie ein Modul, das häufig beim Starten des Python-Interpreters verwendet wird
Sind Php / Ruby / Python, die nur ausgeführt werden, wenn die Datei direkt aufgerufen wird
[Python] Lösung für das Problem, dass Elemente beim Kopieren einer Liste verknüpft werden
[Python: UnicodeDecodeError] Eine der Fehlerlösungen beim Lesen von CSV
Lösen Sie das japanische Problem, wenn Sie das CSV-Modul in Python verwenden.
Überprüfung der Theorie, dass "Python und Swift ziemlich ähnlich sind"