El objeto 'str' no tiene el atributo 'decodificar'. ¿Error de Python 3? [duplicar]
Aquí está mi código:
import imaplib
from email.parser import HeaderParser
conn = imaplib.IMAP4_SSL('imap.gmail.com')
conn.login('[email protected]', 'password')
conn.select()
conn.search(None, 'ALL')
data = conn.fetch('1', '(BODY[HEADER])')
header_data = data[1][0][1].decode('utf-8')
En este punto recibo el mensaje de error:
AttributeError: el objeto 'str' no tiene el atributo 'decodificar'
Python 3 ya no tiene str.decode(), entonces, ¿cómo puedo solucionar este problema?
Estás intentando decodificar un objeto que ya está decodificado . Tienes un str
, ya no es necesario decodificar desde UTF-8.
Simplemente suelte la .decode('utf-8')
pieza:
header_data = data[1][0][1]
Si llega aquí utilizando la autenticación jwt después de la versión PyJWT v2.0.0 (22/12/2020), es posible que desee congelar su versión de PyJWT a la versión anterior en su requirements.txt
archivo.
PyJWT==1.7.1
A partir de Python 3, todas las cadenas son objetos Unicode.
a = 'Happy New Year' # Python 3
b = unicode('Happy New Year') # Python 2
Las instrucciones anteriores son las mismas. Entonces creo que deberías eliminar la .decode('utf-8')
parte porque ya tienes un objeto Unicode.