这是我的代码:


import imaplib
from email.parser import HeaderParser

conn = imaplib.IMAP4_SSL('imap.gmail.com')
conn.login('example@gmail.com', 'password')
conn.select()
conn.search(None, 'ALL')
data = conn.fetch('1', '(BODY[HEADER])')
header_data = data[1][0][1].decode('utf-8')

在这一点上,我得到错误消息:

AttributeError: 'str'对象没有'decode'属性

Python 3不再有str.decode(),所以我如何解决这个问题?


当前回答

首先安装合适的JWT

pip3 install PyJWT

然后在代码中

token.encode().decode('UTF-8')

这对我有用,我想这对你也有帮助

其他回答

这招对我很管用:

html.replace("\\/", "/").encode().decode('unicode_escape', 'surrogatepass')

这类似于json.loads(html)行为

我的情况可能有点罕见,但我正在使用django和我的项目在本地运行,但当我部署它时,似乎我得到了多个依赖错误,因为我正在做:pip冻结> requirements.txt这样做修复了这个问题:

pip3 freeze > requirements.txt

其他答案在某种程度上暗示了这一点,但问题可能出现在期望一个字节对象。在Python 3中,decode在具有bytes类的对象时有效。在解码之前运行encode可能会“修复”问题,但这是一对无用的操作,向上游提示问题。

首先安装合适的JWT

pip3 install PyJWT

然后在代码中

token.encode().decode('UTF-8')

这对我有用,我想这对你也有帮助

使用方法:

str.encode().decode()