Einfache statt doppelte Anführungszeichen im json-Belastungen in Python

Ich feststellen, dass single-quotes Ursache simplejson's loads - Funktion fehlschlagen:

>>> import simplejson as json
>>> json.loads("\"foo\"")
'foo'
>>> json.loads("\'foo\'")
Traceback (most recent call last):
...
ValueError: No JSON object could be decoded

Ich bin Parsen Dinge wie: foo = ["a", "b", "c"] aus einer Textdatei in die Listen in Python und möchte auch akzeptieren foo = ['a', 'b', 'c']. simplejson ist bequem für die Herstellung foo automatisch in eine Liste.

Wie bekomme ich loads zu akzeptieren, einzelne Zitate oder automatisch ersetzen das doppelte für einzelne Zitate ohne Zerstörung der Eingang? danke.

  • Nach der JSON spec, es ist nicht JSON, wenn es mit einfachen Anführungszeichen.
  • AFAIK, alle strings in JSON-strings müssen Anführungszeichen gesetzt werden. ["a"] gültig ist JSON in der Erwägung, dass ['a'] nicht
  • Ok, also, wie kann ich Ersatz-single zu double quotes via python?
  • str.replace() - die docs sind Recht Mann.
  • Kannst du nicht beheben, was ist produzieren, die fehlerhafte Ausgabe statt? Sind Sie sich sicher, dass es sein soll ist JSON?
  • Was, wenn es ein 'string with a " quote in it?'. Dies ist nicht die JSON-Ausgabe, was sonst noch falsch sein?
  • falsch. Das würde nicht auf json.loads("\"\'\"")
  • Sie reden darüber, versuchen zu analysieren, nicht-JSON JSON, nahm ich an, dass der fix wird hacky wäre nicht ein großes Problem.
  • Was ist Ihre eigentliche problem? Versuchen Sie zu analysieren JSON-wie JavaScript? Vielleicht sollten Sie einen JavaScript-parser in diesem Fall?
  • Ich bin Parsen Dinge wie: foo = ["a", "b", "c"] in Listen in Python und möchte auch akzeptieren foo = ['a', 'b', 'c']
  • ast.literal_eval(). Wenn Sie möchten, analysieren Python-Literale verwenden einen parser geschrieben für die Aufgabe.
  • Laut wikipedia, Anführungszeichen sind nicht Teil der JSON-Spezifikation.. Mögliche Duplikate von: stackoverflow.com/questions/4162642/...

InformationsquelleAutor | 2013-01-15
Schreibe einen Kommentar