2015-10-21 10 views
5

Ich frage mich, ob es möglich ist, eine Byte-Zeichenfolge, die ich aus dem Lesen einer Datei in eine Zeichenfolge (also type(output) == str) erhalten habe. Alles, was ich bisher bei Google gefunden habe, sind Antworten wie How do you base-64 encode a PNG image for use in a data-uri in a CSS file?, was so aussieht, als würde es in Python 2 funktionieren (wobei, wenn ich mich nicht irre, Strings sowieso Byte-Strings waren), die aber in Python nicht funktionieren 3.4 mehr.Konvertieren von Byte-String in Base64-codierte Zeichenfolge (Ausgabe ist keine Byte-Zeichenfolge)

Der Grund, warum ich diesen resultierenden Byte-String in eine normalen Zeichenfolge konvertiert werden soll, ist, dass ich diese Base64-codierten Daten in einem JSON-Objekt zu speichern, verwenden möge, aber ich halte einen Fehler wie immer:

TypeError: b'Zm9v' is not JSON serializable 

Hier ist ein minimales Beispiel, wo es schief geht:

import base64 
import json 
data = b'foo' 
myObj = [base64.b64encode(data)] 
json_str = json.dumps(myObj) 

so ist meine Frage: gibt es eine Möglichkeit, dieses Objekt vom Typ bytes auf ein Objekt vom Typ str während immer noch die base64-Codierung (so halten zu konvertieren In diesem Beispiel möchte ich die Ergebnis zu sein ["Zm9v"]. Ist das möglich?

Antwort

6

Versuchen

data = b'foo'.decode('UTF-8') 

statt

data = b'foo' 

es in eine Zeichenfolge zu konvertieren.

+0

Ah Snap, der aussieht wie es funktioniert. Vielen Dank! – Joeytje50

Verwandte Themen