'str'对象在Python3中没有属性'decode'

has*_*met 9 python python-3.x python-3.3

我在python 3.3.4中使用"decode"方法遇到了一些问题.这是我的代码:

for lines in open('file','r'):
    decodedLine = lines.decode('ISO-8859-1')
    line = decodedLine.split('\t')
Run Code Online (Sandbox Code Playgroud)

但是我无法解决这个问题:

AttributeError: 'str' object has no attribute 'decode'
Run Code Online (Sandbox Code Playgroud)

你有什么想法?谢谢

Vee*_*rac 24

一个编码字符串,一个解码字节.

您应该从文件中读取字节并解码它们:

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

幸运的是open有一个编码参数使这很容易:

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


Dan*_*man 6

open如果您以文本模式打开,则已经在 Python 3 中解码为 Unicode。如果你想以字节的形式打开它,这样你就可以解码,你需要用'rb'模式打开。


Sat*_*hia 5

PyJWT 2.0.0在版本没有方法之后decode,我们收到此错误。我们应该冻结以下版本以避免这个问题。

PyJWT==1.7.1
Run Code Online (Sandbox Code Playgroud)