2014-09-30 59 views
3

我在python 3.3.4中的「decode」方法有些問題。這是我的代碼:'str'對象在Python3中沒有屬性'decode'

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

但我不能解碼這個問題行:

AttributeError: 'str' object has no attribute 'decode' 

你有什麼想法?謝謝

+2

是,在Python 3.x的字符串不再有'解碼方法 - 看看https://docs.python.org/3/howto/unicode.html – jonrsharpe 2014-09-30 16:00:38

回答

13

一個編碼字符串,和一個解碼字節。

你應該從文件中讀取字節,並對其進行解碼:

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

幸運的是open有一個編碼參數,它讓一切變得簡單:

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

open如果你已經解碼爲Unicode在Python 3在文本模式下打開。如果你想打開它作爲字節,以便你可以解碼,你需要打開模式'rb'。

0

這對我來說很流暢地閱讀Python 3.6中的中文文本:將str轉換爲字節,然後解碼它們。
對於l開放( 'chinese2.txt', 'RB'): decodedLine = l.decode( 'GB2312') 打印(decodedLine)

相關問題