Laden Sie die defekte JSON-DateiPython

Python-Programme
Anonymous
 Laden Sie die defekte JSON-Datei

Post by Anonymous »

Es gibt eine Datei mit Hunderten MB, bei der es sich angeblich um eine JSON-Datei handelt. Leider wurde die Datei mit einem Fehler geschlossen und die JSON-Struktur ist nicht korrekt.
Außerdem ist die Datei eine einzeilige Zeichenfolge.
Datei endet mit zahlreichen ....\x00\ x00\x00
Ich habe viele Varianten mit dem Lesen der JSON-Datei mit Fehlerkontrolle und manueller Dekodierung ausprobiert, kann die Daten aber immer noch nicht in den Pandas-Datenrahmen analysieren.
Letzte Idee, wo ich aufgehört habe: Lesen Sie die Zeile von:

Code: Select all

with open('data.json', 'r', encoding='utf-8') as f:
dt = f.read()
und dann muss ich mit der Zeile als String arbeiten und versucht, die JSON-Struktur zu korrigieren, indem ich den letzten richtigen Datenblock finde und fehlende }]-Symbole und das Ende hinzufüge, um JSON zu lassen. Die Dekodierungsfunktion funktioniert korrekt.
Gibt es noch andere Varianten wie teilweise gelesene Dateien oder automatische Korrektur von Fehlern in der JSON-Struktur?
Ich habe diesen Ansatz auch ausprobiert :

Code: Select all

import json
import re

class LazyDecoder(json.JSONDecoder):
def decode(self, s, **kwargs):
regex_replacements = [
(re.compile(r'([^\\])\\([^\\])'), r'\1\\\\\2'),
(re.compile(r',(\s*])'), r'\1'),
]
for regex, replacement in regex_replacements:
s = regex.sub(replacement, s)
return super().decode(s, **kwargs)

with open(r'data.json') as result:
data = json.load(result, cls=LazyDecoder, strict=False)
aber es gibt einen Fehler mit dem Trennzeichen JSONDecodeError: Expecting ',' delimiter: line 1 columns 73900 (char 73899)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post