'str' object has no attribute 'decode' in Python3

One encodes strings, and one decodes bytes.

You should read bytes from the file and decode them:

for lines in open('file','rb'):
    decodedLine = lines.decode('ISO-8859-1')
    line = decodedLine.split('\t')

Luckily open has an encoding argument which makes this easy:

for decodedLine in open('file', 'r', encoding='ISO-8859-1'):
    line = decodedLine.split('\t')

open already decodes to Unicode in Python 3 if you open in text mode. If you want to open it as bytes, so that you can then decode, you need to open with mode 'rb'.


After PyJWT 2.0.0 version not having a decode method, so we are getting this error. We should freeze the below version to avoid this issue.

PyJWT==1.7.1

This works for me smoothly to read Chinese text in Python 3.6. First, convert str to bytes, and then decode them.

for l in open('chinese2.txt','rb'):
    decodedLine = l.decode('gb2312')
    print(decodedLine)