2015-10-21 22 views
5

Mi chiedevo se è possibile convertire una stringa di byte che ho ottenuto leggendo un file in una stringa (quindi type(output) == str). Tutto quello che ho trovato su Google finora è stato risposte come How do you base-64 encode a PNG image for use in a data-uri in a CSS file?, che sembra funzionare in python 2 (dove, se non sbaglio, le stringhe erano comunque stringhe di byte), ma che non funziona in python 3.4 più.Converti stringa di byte in stringa codificata in base64 (l'output non è una stringa di byte)

Il motivo che voglio convertire questa stringa di byte risultante in una stringa normale è che voglio utilizzare questi dati codificati in base 64 per memorizzare in un oggetto JSON, ma io continuo a ricevere un errore simile a:

TypeError: b'Zm9v' is not JSON serializable 

Ecco un esempio minimo di dove va storto:

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

quindi la mia domanda è: esiste un modo per convertire questo oggetto di tipo bytes ad un oggetto di tipo str pur mantenendo la Base64 codifica (così in questo esempio, voglio il risultato essere ["Zm9v"]. È possibile?

risposta

6

Prova

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

invece di

data = b'foo' 

per convertirlo in una stringa.

+0

Uno snap che sembra funzionare. Grazie mille! – Joeytje50