Python CSV-Fehler: Zeile enthält NULL-byte

Arbeite ich mit einigen CSV-Dateien mit dem folgenden code:

reader = csv.reader(open(filepath, "rU"))
try:
    for row in reader:
        print 'Row read successfully!', row
except csv.Error, e:
    sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e))

Und eine Datei wirft diesen Fehler:

file my.csv, line 1: line contains NULL byte

Was kann ich tun? Google scheint vorzuschlagen, dass es möglicherweise eine Excel-Datei, die gespeichert wurden, als ein .csv falsch. Gibt es eine Möglichkeit, die ich bekommen kann um dieses problem in Python?

== UPDATE ==

Folgende @JohnMachin Kommentar unten, ich habe versucht, das hinzufügen dieser Zeilen in meinem Skript:

print repr(open(filepath, 'rb').read(200)) # dump 1st 200 bytes of file
data = open(filepath, 'rb').read()
print data.find('\x00')
print data.count('\x00')

- Und das ist die Ausgabe, die ich bekam:

'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00\ .... <snip>
8
13834

Also die Datei enthält tatsächlich NUL-bytes.

Was bedeutet od -c sagen, dass die erste Zeile sieht so aus?
wie Sie die Abfrage sollte ich laufen, so etwas wie meine Katze.csv - | od -c | mehr ? mit, dass ich bekommen: 0000000 D e p a r t m e n t-F a m i l
Wie ist die CSV-erzeugt ? Aus excel können Sie in der Lage sein, zu versuchen, ein Dialekt. Ansonsten schauen, sagen: stackoverflow.com/questions/2753022/...
Danke. Es ist nicht meine CSV, und leider habe ich nicht die macht, es zu ändern. Ich denke, dass es erstellt wurde, als Excel speichern als CSV-Datei (boo). Ein Dialekt, der klingt wie eine gute Idee - ich werde das ausprobieren!
Wenn es eigentlich schon gespeichert als CSV-Datei, sollte es funktionieren. Eine Sache, die ich manchmal finde, ist der TSV (tab-getrennt) - Dateien getarnt als CSV, so dass Sie könnten versuchen, Einstellung ein Trennzeichen '\t'. Wenn es gespeichert worden ist, als eine Excel-Datei, und die Erweiterung verändert das CSV-Format, kein Dialekt ist, zur Arbeit zu gehen. Ich denke, deine einzige option in diesem Fall wäre die Verwendung von Excel zum speichern von Kopien als die entsprechende CSV-Datei.

InformationsquelleAutor AP257 | 2010-11-12

Schreibe einen Kommentar