Ich bemerke, dass einfache Anführungszeichen dazu führen, dass simplejson
s loads
function fehlschlägt:
Ich analysiere Dinge wie: foo = ["a", "b", "c"]
aus einer Textdatei in Listen in Python und möchte auch foo = ['a', 'b', 'c']
akzeptieren. simplejson
ist praktisch, um foo
automatisch zu einer Liste zu machen.
Wie kann ich loads
dazu bringen, einfache Anführungszeichen zu akzeptieren, oder automatisch Double für einfache Anführungszeichen ersetzen, ohne die Eingabe zu zerstören? Danke.
Verwenden Sie das richtige Tool für den Job. Sie analysieren JSON nicht, sondern Python. Verwenden Sie daher %. co_de% stattdessen:
%Vor%Ich habe mit dieser StackOverflow-Frage angefangen, als ich selbst nach einer Lösung suchte.
Die Lösung, die ast.literal_eval()
verwendet, funktionierte nicht in allen meinen Fällen, da der Text auch gelegentlich boolesche Konstanten true / false hatte, die nicht als Python-Tokens (die groß geschrieben werden) erkannt wurden.
Um es für mich selbst zu lösen, habe ich einen benutzerdefinierten JSONDecoder erstellt, der in das standardmäßige json Python-Paket integriert wird.
> pip install git+https://github.com/jpz/tolerantjsondecoder.git
Vielleicht kann das für die nächste Person von Nutzen sein.
Nachdem ich das abgeschlossen habe, habe ich später die Demjson -Bibliothek gefunden, die mehr zu sein scheint komplette Lösung, aber ich habe es nicht ausgewertet.
Demjson macht deine Arbeit, aber es ist extrem langsam und ich meine sehr langsam im Vergleich zu simplejson. Ich empfehle es nicht für Produktionsumgebung.
ast.literal_eval () und yaml funktionieren auch nicht auf allen json, also brauchen Sie eine stabilere Lösung wie simplejson.
Wenn Sie simplejson ein wenig optimieren, dann kann es Ihre Arbeit machen. Ich selbst habe es getan und diesen Code geteilt.
Ich erzähle es in 2 Punkten
1) Laden Sie simplejson von github herunter und fügen Sie es Ihrem Projekt hinzu. 2) Jetzt hat Simplejson decoder.py Python-Datei. Ersetzen Sie diesen Dateicode durch diesen Code
%Vor%2) simplejson hat scanner.py Python-Datei. Ersetzen Sie diesen Dateicode durch diesen Code
%Vor%Jetzt sind Sie fertig. Simplejson ist die schnellste und stabilste Bibliothek, die ich verwendet habe.
Ich habe einige Zeilen Code in simplejson geändert und jetzt funktioniert diese großartige Bibliothek für
Ich habe nur den Python-Code geändert. Also, wenn Sie C-Erweiterung für Beschleunigung Boost verwenden, wird dieser Code nicht funktionieren.
Demjson macht deine Arbeit, aber es ist extrem langsam und ich meine sehr langsam im Vergleich zu simplejson. Ich empfehle es nicht für Produktionsumgebung.
ast.literal_eval () und yaml funktionieren auch nicht auf allen json, also brauchen Sie eine stabilere Lösung wie simplejson.
Wenn Sie simplejson ein wenig optimieren, dann kann es Ihre Arbeit machen. Ich selbst habe es getan und diesen Code geteilt.
Ich erzähle es in 2 Punkten
1) Laden Sie simplejson von github herunter und fügen Sie es Ihrem Projekt hinzu. 2) Jetzt hat Simplejson decoder.py Python-Datei. Ersetzen Sie diesen Dateicode durch diesen Code
%Vor%2) simplejson hat scanner.py Python-Datei. Ersetzen Sie diesen Dateicode durch diesen Code
%Vor%Jetzt sind Sie fertig. Simplejson ist die schnellste und stabilste Bibliothek, die ich verwendet habe.
Ich habe einige Zeilen Code in simplejson geändert und jetzt funktioniert diese großartige Bibliothek für
Ich habe nur den Python-Code geändert. Also, wenn Sie C-Erweiterung für Beschleunigung Boost verwenden, wird dieser Code nicht funktionieren.
Wo auch immer ich Änderungen vorgenommen habe, habe ich Kommentar # Code hier geändert
hinzugefügtIch habe irrtümlicherweise vorher als Gastbenutzer geantwortet und kann mich jetzt nicht einloggen, um diese Antwort zu bearbeiten, also postete ich sie im neuen Thread.
Tags und Links python json simplejson