Ich habe einen Prozess, der ein Wörterbuch mit Python 3.2 in Essig einlegt. Ich muss dann dieses Wörterbuch mit Python 2.7 oder 2.6 entpacken. Das Problem ist, dass ich beim Übertragen zwischen Python-Versionen ein Wörterbuch voller Unicode-Daten bekomme, das die Python-API stört, in die ich es einspeisen möchte.Python-Gurke konvertiert zwischen Versionen in Unicode
Abbeizen in Python 3.2:
myDict = {'a': 'first', 'b': 'second', 'c': 'third'}
with open(file, 'wb') as f:
pickle.dump(myDict, f, 2)
Unpickling in Python 2.6:
with open(file, f) as f:
myDict = pickle.load(f)
Rückkehr: {u'a ': u'first', U'c ': u'third' , u'b ': u'second'}
Wie kann ich genau das zurückbekommen, was ich eingegeben habe (dh nicht Unicode)?
Ah! mein Missverständnis. Ich hatte nicht bemerkt, dass alle Zeichenfolgen in 3.x Unicode waren. Laut der Dokumentation vor Version 3 sollte Protokoll = 0 ein ASCII-Format sein, aber Sie können dies nicht verwenden, um die Ausgabe nach ASCII zu erzwingen, weil etwas geändert wurde und die Dokumentation für v3 von 'ASCII' in 'subtil' geändert wird "menschlich lesbar" (seufz). Ihre Lösung ist jedoch schnell und schmerzlos. Vielen Dank – MappaGnosis