Heim >Backend-Entwicklung >Python-Tutorial >Warum verfügt meine Python-CSV-Ausgabe unter Windows über zusätzliche Wagenrückläufe?

Warum verfügt meine Python-CSV-Ausgabe unter Windows über zusätzliche Wagenrückläufe?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-03 19:30:13484Durchsuche

Why Does My Python CSV Output Have Extra Carriage Returns on Windows?

Problem mit zusätzlichem Wagenrücklauf in der CSV-Ausgabedatei unter Windows in Python

Beim Generieren von CSV-Dateien in Python kann versehentlich ein zusätzlicher Wagenrücklauf hinzugefügt werden Rückkehr am Ende jeder Zeile. Dieses Verhalten kann im folgenden Code beobachtet werden:

import csv

with open('test.csv', 'w') as outfile:
    writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(['hi', 'dude'])
    writer.writerow(['hi2', 'dude2'])

Erwartete Ausgabe:

hi,dude
hi2,dude2

Tatsächliche Ausgabe (Windows):

hi,dude\r\r\nhi2,dude2\r\r\n

Ursachen und Lösung für Python 3:

In Python 3 tritt dieses Problem aufgrund der standardmäßigen universellen Newline-Übersetzung auf Besonderheit. Um das Problem zu beheben, öffnen Sie die Datei mit newline='', um diese Übersetzung zu deaktivieren:

with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    ...

Ursachen und Lösung für Python 2:

Unter Windows in Python 2 , tritt dieses Problem auf, weil CSV als Binärformat betrachtet wird und rn das Datensatztrennzeichen ist. Wenn die Datei im Textmodus geöffnet wird, ersetzt Python das n durch rn, was zu einem doppelten Wagenrücklauf führt. Die Lösung besteht darin, Dateien immer im Binärmodus zu öffnen:

with open('test.csv', 'wb') as outfile:
    writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
    ...

Das obige ist der detaillierte Inhalt vonWarum verfügt meine Python-CSV-Ausgabe unter Windows über zusätzliche Wagenrückläufe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn