CSV.Fehler: Zeile enthält Null-Byte in Python

Zeeshan Afridi 10 Oktober 2023
  1. das CSV-Dateiformat
  2. Erstellen Sie eine CSV-Datei in Python
  3. der _csv.Error: Zeile enthält NULL-Byte Fehler in Python
  4. Beheben Sie den Fehler _csv.Error: line contains NULL byte in Python
  5. Abschluss
CSV.Fehler: Zeile enthält Null-Byte in Python

Eine CSV-Datei ist eine Textdatei, die durch Kommas getrennte Werte enthält. Jede Zeile in der Datei stellt eine Datenzeile dar, und ein Komma trennt jeden Wert.

CSV-Dateien werden häufig zum Speichern von Daten aus Tabellenkalkulationen oder Datenbanken verwendet. Sie können in Texteditoren oder Tabellenkalkulationsprogrammen geöffnet und mit Programmiersprachen einfach analysiert und verarbeitet werden.

das CSV-Dateiformat

Eine CSV-Datei ist eine Textdatei, die Daten in einem tabellarischen Format speichert. Jede Zeile der Tabelle wird als Datensatz bezeichnet, und jedes Feld im Datensatz wird als Spalte bezeichnet.

CSV-Dateien verwenden normalerweise ein Komma, um die einzelnen Felder zu trennen, aber es können auch andere Zeichen wie Tabulatoren oder Leerzeichen verwendet werden.

CSV-Dateien werden häufig verwendet, um Daten aus Datenbanken oder Tabellenkalkulationen zu speichern. Sie können in einem Texteditor wie Microsoft Notepad oder einem Tabellenkalkulationsprogramm wie Microsoft Excel geöffnet werden.

Erstellen Sie eine CSV-Datei in Python

CSV steht für Comma-Separated Values, wobei die Daten in der Datei durch Kommas getrennt und in tabellarischer Form als Klartext gespeichert werden. Jede Zeile in der Datei stellt einen Datensatz dar, und die Spalte stellt die verschiedenen Attribute der Daten in den CSV-Dateien dar.

import csv

meta_data = ["First Name", "Last Name", "Course", "Age"]
student_data = ["Zeeshan", "Afridi", "Computer programming", "24"]

with open("countries.csv", "w", encoding="UTF8") as f:
    writer = csv.writer(f)

    # write the header
    writer.writerow(meta_data)

    # write the data
    writer.writerow(student_data)

# closing the file
f.close()

a = open("countries.csv", "r")
print(a.read())

# closing the file
a.close()

Ausgang:

First Name,Last Name,Course,Age
Zeeshan,Afridi,Computer programming,24

der _csv.Error: Zeile enthält NULL-Byte Fehler in Python

Angenommen, Sie erhalten _csv.Error: Zeile enthält NULL-Byte, wenn Sie versuchen, eine CSV-Datei zu lesen, liegt dies wahrscheinlich daran, dass die Datei ein oder mehrere NULL-Bytes enthält. Um dies zu beheben, können Sie die Option --zero-terminated verwenden, wenn Sie den CSV-Reader ausführen, der alle NULL-Bytes als Zeilenende-Zeichen behandelt.

Wenn Sie Nullwerte haben, wird der folgende Fehler auftreten:

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

Beheben Sie den Fehler _csv.Error: line contains NULL byte in Python

_csv.Error: line contains NULL byte tritt normalerweise auf, weil Sie versuchen, eine CSV-Datei zu lesen, die in der falschen Kodierung gespeichert ist. Sie müssen beim Lesen der Datei die richtige Codierung angeben, um dies zu beheben.

Wenn die Datei beispielsweise in UTF-8 codiert ist, würden Sie den folgenden Code verwenden:

import csv

with open("filename.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

Angenommen, Sie stoßen beim Versuch, eine CSV-Datei zu lesen, auf die Meldung _csv.Error: line contains NULL byte, dann enthält die Datei wahrscheinlich ein ungültiges Zeichen. Dies kann mehrere Ursachen haben, einschließlich Zeichen, die in der UTF-8-Codierung nicht gültig sind, oder Zeichen, die nicht sichtbar sind (z. B. nicht druckbare Zeichen).

Um diesen Fehler zu beheben, müssen Sie das ungültige Zeichen identifizieren und aus der Datei entfernen. Dies kann mit einem Texteditor oder einem Hex-Editor erfolgen.

Nachdem das ungültige Zeichen entfernt wurde, sollte die Datei problemlos gelesen werden können.

Dies sind die drei weiteren Lösungen für diese Art von Fehler.

  1. Konvertieren im Speicherbytestrom
  2. Durch Ersetzen eines NULL-Bytes durch einen leeren String
  3. Passieren von Festnetzleitungen

Konvertieren Sie den In-Memory-Bytes-Stream von Objekten

Wir können diesen Fehler beheben, indem wir den In-Memory-Bytestream der Objektdatei konvertieren. Unten ist also ein Code, der hilft, es in einen In-Memory-Byte-Stream zu konvertieren.

content = csv_file.read()
# after conversion into an in-memory byte stream
csv_stream = io.BytesIO(content)

Ersetzen Sie NULL-Bytes durch leere Zeichenfolgen

Der Fehler NULL byte kann behoben werden, indem Zeilen durchlaufen und Null-Bytes durch leere Zeichenfolgen ersetzt werden. Der Code für diesen Zweck lautet wie folgt:

# After Iteration through the lines and replacing null bytes with empty string
fixed_lines = (line.replace(b"\x00", b"") for line in csv_stream)

Übergeben Sie die Objektdatei in fixed_lines statt csv_stream

Um diesen Fehler zu beheben, müssen feste Leitungen anstelle eines CSV-Streams übergeben werden. Der Code für diesen Zweck lautet wie folgt:

# Below remains unchanged, just passing in fixed_lines instead of csv_stream
stream = codecs.iterdecode(fixed_lines, "utf-8-sig", errors="strict")
dict_reader = csv.DictReader(stream, skipinitialspace=True, restkey="INVALID")

Abschluss

Der CSV-Fehler Zeile enthält NULL-Byte wird durch eine Zeile in Ihrer CSV-Datei verursacht, die ein Null-Byte enthält. Dies kann passieren, wenn Sie einen Texteditor verwenden, der Unicode nicht unterstützt, oder wenn Sie die Datei von einem anderen System übertragen, das Unicode nicht unterstützt.

Um diesen Fehler zu beheben, müssen Sie die Zeile in Ihrer CSV-Datei finden, die das Nullbyte enthält, und sie entfernen. Sie können dies mit einem Texteditor tun, der Unicode unterstützt, oder indem Sie die Datei auf ein System übertragen, das Unicode unterstützt.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Verwandter Artikel - Python Error