1202 Stimmen

Eine String-Darstellung eines Wörterbuchs in ein Wörterbuch umwandeln?

Wie kann ich die str Darstellung einer dict wie etwa die folgende Zeichenkette, in eine dict ?

s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"

Ich ziehe es vor, nicht zu verwenden eval . Was kann ich noch verwenden?

Der Hauptgrund dafür ist, dass eine Klasse, die ein Kollege von mir geschrieben hat, alle Eingaben in Strings umwandelt. Ich bin nicht in der Stimmung zu gehen und seine Klassen zu ändern, um mit diesem Problem umzugehen.

2 Stimmen

Wenn Sie Python 2.6 nicht verwenden können, können Sie eine einfache safeeval-Implentation verwenden wie code.activestate.com/rezepte/364469 Es setzt auf den Python-Compiler auf, so dass Sie nicht selbst die ganze Arbeit machen müssen.

31 Stimmen

Hinweis : Für diejenigen, die hierher kommen mit täuschend ähnlich aussehend JSON Daten, wollen Sie lesen gehen JSON in Python parsen stattdessen. JSON ist nicht dasselbe wie Python . Wenn Sie " doppelte Anführungszeichen um Ihre Zeichenketten haben Sie wahrscheinlich JSON-Daten. Sie können auch nach null , true o false Die Python-Syntax verwendet None , True y False .

2voto

Verwenden Sie einfach die eval() fonction

Haftungsausschluss : wenn Sie Folgendes verwenden json.dumps() oder eine ähnliche Funktion zur Umwandlung eines Diktats in eine Zeichenkette verwenden, müssen Sie mit booleschen Werten vorsichtig sein. Weil diese Funktion transformiert Truetrue le eval() Funktion nicht verstehen true o false als boolesche Werte, sondern als Variablen. In diesem Fall wird also ein Fehler zurückgegeben.

In [1]: import json

In [2]: d = {'a': 1, 'b': '2', 'c': 'True'}

In [3]: d_str = json.dumps(d)

In [4]: d_str
Out[4]: '{"a": 1, "b": "2", "c": "True"}'

In [5]: eval(d_str)
Out[5]: {'a': 1, 'b': '2', 'c': 'True'}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X