Hallo zusammen!
Gibt es eine Möglichkeit, eine beliebig tief verschachtelte Datenstruktur bestehend aus Strings komplett (also jedes Element einzeln) zu decodieren, bzw. encodieren?
Sozusagen bin ich auf der Suche nach einer Kombination aus "copy.deepcopy(x)" und "map(function, list, ...)"
Gibts da etwas?
Gruß,
Simon
Beliebig verschachtelte Datenstruktur encodieren/decodieren
Ich versuchs mal...
Die Ausgangsstruktur ist eine verschachtelte DS beliebiger Tiefe bestehend aus z.B. ISO-8859-1 codierten Strings
Bsp:
wobei die Tiefe und der Aufbau nicht bekannt ist.
Alle Strings in dieser Struktur würde ich nun gerne in Unicode umwandeln.
Nur wie mache ich das am Geschicktesten?
Bei einer "normalen" Liste würde diese so aussehen:
Gibts da vielleicht irgendeine Methode die jedes Element einer beliebig tiefen Datenstruktur behandelt?
Oder muss ich da mir rekursiv einen abprogrammieren?
Die Ausgangsstruktur ist eine verschachtelte DS beliebiger Tiefe bestehend aus z.B. ISO-8859-1 codierten Strings
Bsp:
Code: Alles auswählen
l = ['\xfc\xfc\xfc', {'\xe4':'\xb0'}]
Alle Strings in dieser Struktur würde ich nun gerne in Unicode umwandeln.
Nur wie mache ich das am Geschicktesten?
Bei einer "normalen" Liste würde diese so aussehen:
Code: Alles auswählen
l2 = [s.decode('ISO8859-1') for s in l]
Oder muss ich da mir rekursiv einen abprogrammieren?
Je nach dem wie kompliziert die Struktur ist:
Der Code hat noch die ein oder andere Schwäche, als Ansatz genügt er aber sicher.
Code: Alles auswählen
>>> spam = [1234, "asdf", ("asdf", {"hmpf":123, "argh":"moep"}, 2), [234, "oink", "maeh"]]
>>> def eggs(data):
... if isinstance(data, str):
... return data.upper()
... try:
... t = type(data)
... func = {dict:dict.iteritems}.get(t, iter)
... return t([eggs(x) for x in func(data)])
... except TypeError:
... return data
...
>>> eggs(spam)
[1234, 'ASDF', ('ASDF', {'ARGH': 'MOEP', 'HMPF': 123}, 2), [234, 'OINK', 'MAEH']]
Das Leben ist wie ein Tennisball.
Wow!
Das sieht ja schon ganz gut aus!
Sowas habe ich gesucht! Ich denke allein währ ich auf das die nächsten Stunden nicht gekommen!
Danke!
@Hyperion: Dass mein Beispiel der JSON Struktur ähnelt war eher Zufall...
Das sieht ja schon ganz gut aus!
Sowas habe ich gesucht! Ich denke allein währ ich auf das die nächsten Stunden nicht gekommen!
Danke!
@Hyperion: Dass mein Beispiel der JSON Struktur ähnelt war eher Zufall...