@EyDu: Ich kann leider keinen Code posten, da ich ja noch gar keinen habe.
Mein Problem ist, dass ich aus einer Schnittstelle eine Liste geliefert bekomme, die zB wie schon beschrieben, so aussehen könnte:
(wohl etwas mehr Felder, aber dieser Schnipsel reicht ja bereits für die Beschreibung des Problems)
Nun muss ich in Abhängigkeit des Typs des Inhaltes des Strings verschiedene Dinge tun. Also so in der Form...
wenn vom Typ 'String' dann tue ...
wenn vom Typ 'Int' dann tue ...
Wenn ich den Typ erstmal habe, ist der Rest kein Problem mehr... Mit dem 'ast.literal_eval' geht das ja auch schon ganz gut und reicht mir eigentlich auch - nur wenn es halt nen String ist (aus meiner Sicht), dann gibts nen Problem.
Somit bin ich nun zu folgender Lösung gekommen:
Code: Alles auswählen
import ast
a_dict = {}
a_list = ['auto', '17', '["eine liste", 42]', '{"TEST":40, "HAUS": 50}']
for item in a_list:
try:
a_dict[item] = type(ast.literal_eval(item))
except:
a_dict[item] = type(ast.literal_eval(repr(item)))
print a_dict
Und das kommt dann heraus:
Code: Alles auswählen
{'["eine liste", 42]': <type 'list'>, 'auto': <type 'str'>, '17': <type 'int'>, '{"TEST":40, "HAUS": 50}': <type 'dict'>}