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
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"])
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"])
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.
https://qiita.com/ryokurta256/items/defc553f5165c88eac95 Python: open: newline Python: csv: lineterminator
Recommended Posts