Ich muss eine CSV-Datei in Python lesen.
Da ich für die letzte Zeile einen Fehler 'NULL Byte' erhalte, möchte ich vermeiden, für Schlüsselwort aber while zu verwenden.
Weißt du wie das geht?
%Vor%Ich möchte die for-Schleife durch eine while-Schleife ersetzen, so dass ich überprüfen kann, ob die Zeile NULL ist oder nicht.
Was ist die Funktion zum Lesen einer einzelnen Zeile im CSV-Modul? Danke
Danke
S. unter dem Traceback
%Vor%Vielleicht könnten Sie die vom CSV-Reader ausgegebene Ausnahme abfangen. Etwas wie das:
%Vor% Oder Sie könnten next()
:
Sie müssen (immer) GENAU sagen, was die Fehlermeldung ist, die Sie erhalten haben. Bitte bearbeiten Sie Ihre Frage.
Wahrscheinlich das:
%Vor%Das csv-Modul ist nicht 8-Bit-sauber; siehe die Dokumente : "" "Außerdem gibt es derzeit einige Probleme bezüglich ASCII-NUL-Zeichen." ""
Die Fehlermeldung selbst ist fehlerhaft: Es sollte "NUL" sein, nicht "NULL": - (
Wenn die letzte Zeile in der Datei leer ist, erhalten Sie keine Ausnahme, Sie erhalten nur row == []
.
Wenn das Problem eine oder mehrere NULs in Ihrer (n) Datei (en) ist, müssen Sie (1) ernsthaft mit dem (den) Ersteller (n) Ihrer Datei (n) sprechen (2), falls dies nicht der Fall ist, lesen Sie die gesamte Datei in (mode="rb"), entfernen Sie die NUL (s), und geben Sie fixed_text.splitlines()
an den CSV-Reader.
Die Django-Community hat sich mit Python-CSV-Importproblemen befasst, daher lohnt es sich, Suche nach CSV-Import dort, oder eine Frage posten. Sie können die fehlerhafte Zeile auch direkt in der CSV-Datei bearbeiten, bevor Sie den Import starten.
Wenn Ihr Problem für die letzte leere Zeile spezifisch ist, können Sie numpy.genfromtxt (oder die alte matplotlib.mlab.csv2rec)
verwenden %Vor%Sie könnten versuchen, die Datei während des Lesens zu löschen:
%Vor%Nehmen wir an, dass das einfache Ignorieren von NULL-Zeichen für Sie funktioniert!
nicht wirklich sicher, was du meinst, aber du kannst immer mit if
nach Existenz suchen %Vor%Wenn dies nicht das ist, was Sie wollen, sollten Sie Ihr Problem genauer beschreiben, indem Sie Beispiele für Dinge zeigen, die für Sie nicht funktionieren, einschließlich Beispieldateiformat und gewünschte Ausgabe.
Ich habe keine Antwort, aber ich kann das Problem bestätigen und die meisten Antworten funktionieren nicht. Sie können diese Ausnahme nicht abfangen. Sie können nicht auf if line
testen. Vielleicht könntest du direkt nach dem NULL-Byte suchen, aber ich bin nicht schnell genug, um das zu tun ... Wenn es immer in der letzten Zeile ist, könntest du das natürlich überspringen.
Verarbeite die ursprüngliche csv
-Datei und ersetze die Nul '%code%'
mit leer, und dann kannst du sie lesen.
Der eigentliche Code sieht so aus:
Es funktioniert für mich.
Und die ursprüngliche Antwort ist hier: csv - enthält Nullbyte