2017-01-25 3 views
1

Hier ist das Problem - ich habe eine Zeichenfolge im folgenden Format (Hinweis: Es gibt keine Zeilenumbrüche). Ich möchte einfach, dass diese Zeichenfolge in einem Python-Wörterbuch oder einem Json-Objekt serialisiert wird, um einfach zu navigieren. Ich habe sowohl ast.literal_eval als auch json ausprobiert, aber das Endergebnis ist entweder ein Fehler oder einfach eine andere Zeichenfolge. Ich kratze mich manchmal über diesen Kopf und ich weiß, dass es eine einfache und elegante Lösung gibt, als nur meinen eigenen Parser zu schreiben.Konvertieren einer Zeichenfolge in Python-Wörterbuch oder JSON-Objekt

{ 
    table_name: 

    { 
    "columns": 

    [ 
    { 

     "col_1":{"col_1_1":"value_1_1","col_1_2":"value_1_2"}, 
     "col_2":{"col_2_1":"value_2_1","col_2_2":"value_2_2"}, 
     "col_3":"value_3","col_4":"value_4","col_5":"value_5"}], 

    "Rows":1,"Total":1,"Flag":1,"Instruction":none 

    } 
} 
+0

Das Problem ist, dass 'table_name' sollte (mit Anführungszeichen, wenn Sie JSON verwenden möchten) zitiert werden und 'none' sollte' None' für 'ast.literal_eval' und' null' für 'JSON' sein. –

Antwort

0

Hinweis, dass JSON Decoder jeder Eigenschaftsnamen in doppelte Anführungszeichen eingeschlossen werden erwartet.
Verwenden Sie den folgenden Ansatz mit re.sub() und json.loads() Funktionen:

import json, re 

s = '{table_name:{"columns":[{"col_1":{"col_1_1":"value_1_1","col_1_2":"value_1_2"},"col_2":{"col_2_1":"value_2_1","col_2_2":"value_2_2"},"col_3":"value_3","col_4":"value_4","col_5":"value_5"}],"Rows":1,"Total":1,"Flag":1,"Instruction":none}}' 
s = re.sub(r'\b(?<!\")([_\w]+)(?=\:)', r'"\1"', s).replace('none', '"None"') 
obj = json.loads(s) 

print(obj) 

Der Ausgang:

{'table_name': {'columns': [{'col_5': 'value_5', 'col_2': {'col_2_1': 'value_2_1', 'col_2_2': 'value_2_2'}, 'col_3': 'value_3', 'col_1': {'col_1_2': 'value_1_2', 'col_1_1': 'value_1_1'}, 'col_4': 'value_4'}], 'Flag': 1, 'Total': 1, 'Instruction': 'None', 'Rows': 1}} 
+0

Danke, das funktioniert! – rhm2012

+0

@ rhm2012, gern geschehen – RomanPerekhrest

Verwandte Themen