Wie kann ich analysieren Wörterbuch-string?
Ich versuche zu konvertieren einen string in ein dictionary mit dict
Funktion, wie dies
import json
p = "{'id':'12589456'}"
d = dict(p)
print d['id']
Aber ich bekomme die folgende Fehlermeldung
ValueError: dictionary update sequence element #0 has length 1; 2 is required
Warum scheitert es? Wie kann ich dieses Problem beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie haben, ist ein string, aber
dict
Funktion kann nur durch Iteration über Tupel (Schlüssel-Wert-Paare) zu konstruieren Wörterbuch. Siehe die Beispiele in derdict
's Dokumentation.In diesem speziellen Fall, die Sie verwenden können,
ast.literal_eval
zu konvertieren Sie die Zeichenfolge in das entsprechendedict
Objekt, wie diesSeit
p
ist ein string mit JSON (ish), müssen Sie laden Sie es zuerst, um wieder ein Python-dictionary. Dann können Sie den Zugriff auf Elemente innerhalb es:Beachten Sie jedoch, dass der Wert in
p
ist nicht wirklich JSON; JSON Ansprüche (und die Pythonjson
- Modul einsetzt), dass Zeichenketten angegeben sind, mit doppelten Anführungszeichen, nicht das einfache Anführungszeichen. Ich habe aktualisiert es in meinem Beispiel hier, aber je nachdem, wo hast du dein Beispiel, haben Sie vielleicht mehr zu tun.p is a string containing JSON (ish)
- Nein ist es nicht.ast.literal_eval
wie ich gezeigt habe, in meiner Antwort.eval
, aber es ist in der Regel als schlecht. Check diese Frage und dieser