Beim Schreiben einer CSV-Datei in Python auf einem Windows-System tritt ein unerwartetes Problem auf, bei dem ein zusätzlicher r Das Zeichen erscheint am Ende jeder Zeile in der Datei. Diese Abweichung vom erwarteten rn-Zeilenabschluss gibt Anlass zur Sorge und lässt Entwickler sich über die zugrunde liegende Ursache und die Frage, ob es sich um ein beabsichtigtes Verhalten handelt, fragen.
Um der Ursache dieses Problems auf den Grund zu gehen, analysieren wir das bereitgestellte Code-Snippet:
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'])
Dieser Code dient zum Generieren einer CSV-Datei mit dem Namen test.csv, die zwei Datenzeilen enthält: ['hi', 'dude'] und ['hi2', 'dude2']. Bei der Untersuchung der generierten Datei stellen wir jedoch fest, dass an jede Zeile ein zusätzliches R-Zeichen angehängt ist.
Um dieses Verhalten zu verstehen, schauen wir uns die Python-Dokumentation für das CSV-Modul an. Laut Dokumentation wird empfohlen, die Datei auf allen Plattformen mit newline='' zu öffnen, um die universelle Zeilenumbruchübersetzung zu deaktivieren.
Für Python 3:
Standardmäßig Unter Windows verwendet das CSV-Modul die universelle Zeilenumbruchübersetzung, die beim Schreiben in die Datei das Zeilenendezeichen rn in n übersetzt. Um diese Übersetzung zu verhindern und das ursprüngliche rn-Zeilenendezeichen beizubehalten, ist es notwendig, die Datei mit newline='' zu öffnen, wie unten gezeigt:
with open('output.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) ...
Für Python 2:
Unter Windows für Python 2 ist es wichtig, die Dateien im Binärmodus mit „rb“ oder „wb“ zu öffnen, bevor Sie sie entweder an csv.reader oder übergeben csv.writer. Obwohl es sich bei der Datei um eine Textdatei handelt, wird CSV von den beteiligten Bibliotheken als Binärformat betrachtet, wobei rn Datensätze trennt. Wenn Sie dieses Trennzeichen im Textmodus schreiben, wird die Python-Laufzeit aufgefordert, n durch rn zu ersetzen, was zu den beobachteten rrn-Sequenzen in der Datei führt. Weitere Einzelheiten zu diesem Aspekt finden Sie in dieser vorherigen Antwort.
Das obige ist der detaillierte Inhalt vonWarum fügt meine Python-CSV-Datei unter Windows zusätzliche Wagenrückläufe hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!