这是我的代码:


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(),所以我如何解决这个问题?


当前回答

从Python 3开始,所有字符串都是unicode对象。

  a = 'Happy New Year' # Python 3
  b = unicode('Happy New Year') # Python 2

上面的说明是一样的。所以我认为你应该删除.decode('utf-8')部分,因为你已经有了一个unicode对象。

其他回答

从Python 3开始,所有字符串都是unicode对象。

  a = 'Happy New Year' # Python 3
  b = unicode('Happy New Year') # Python 2

上面的说明是一样的。所以我认为你应该删除.decode('utf-8')部分,因为你已经有了一个unicode对象。

首先安装合适的JWT

pip3 install PyJWT

然后在代码中

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

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

使用方法:

str.encode().decode()

如果有人在参加Kaggle时遇到同样的错误,下面是解决方案:

logmodel = LogisticRegression(solver='liblinear')

在使用Flask_JWT_extended包创建JWT access_token时,我得到了“str”对象没有属性“decode”。

为了解决这个问题,我升级了我的Flask-JWT-Extended包到Flask-JWT-Extended==4.1.0

供参考:

请访问此页面:https://flask-jwt-extended.readthedocs.io/en/stable/