2017-04-27 2 views
1

Ich habe jetzt eine Zeichenfolge namens str1 wie folgt aus:wie zu transformieren ‚JSON-like‘ String in reale JSON-Daten

{u'price': 542.23, u'name': u'ACME', u'shares': 100} 

und ich möchte es in eine echte JSON-Daten zu transformieren.

die Art und Weise, die

data = json.loads(str1) 

verwendet funktioniert nicht. Hast du gute Ideen? (mit Python)

+0

Wie kommt haben Sie einen 'U' Präfix in der Zeichenfolge? Hast du so etwas gemacht? 'Str1 = repr (irgendein_Objekt)'? – SuperSaiyan

+0

ist dies wegen der 'Unicode' -' U' –

+0

@SuperSaiyan die Zeichenfolge wie "{u'price ': 542,23, u'name': u'ACME‘, u'shares': 100}". Die ganze Zeile ist eine Zeichenfolge. Tatsächlich befindet sich diese Zeichenfolge in einer Datei. Und ich möchte eine JSON-Daten aus der Datei erhalten. das ist es. – wjxiz

Antwort

3
import ast 

s = "{u'price': 542.23, u'name': u'ACME', u'shares': 100}" 
d = ast.literal_eval(s) 

> type(d) 
<type 'dict'> 

> d['price'] 
542.23 

Übrigens, eval ist nicht sicher.

ast.literal_eval löst eine Ausnahme aus, wenn der Eingang kein gültiger Python-Datentyp ist, so wird der Code nicht ausgeführt werden, wenn es nicht ist.

Verwenden ast.literal_eval, wann immer Sie eval benötigen. Wenn Sie Python-Ausdrücke als eine Eingabe, die Sie auswerten möchten, dann sollten Sie nicht (haben).

+0

vielen dank! Ich suche viele json Themen zu diesem Thema, keiner von ihnen erwähnt ast.literal_eval. – wjxiz

Verwandte Themen