我想解析一個日誌文件,但文件格式總是在unicode。我想要自動化的通常過程:Python 3的Unicode到UTF-8的文件
- I pull file up in notepad
- Save as...
- change encoding from
unicode
toUTF-8
- Then run python program on it
所以這是我想在Python 3.4中自動化的過程。非常簡單,只是改變了文件UTF-8
或類似open(filename,'r',encoding='utf-8')
雖然這個確切的行被扔我這個錯誤,當我試圖調用read()就可以了:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
這將是非常有益的,如果我可以轉換整個文件(就像在我的第一個場景中一樣),或者用UTF-8打開整個文件,這樣我就不必在每次分析字符串時都str.encode(或類似的東西)。
有人通過這個,知道我應該使用哪種方法以及如何去做?
編輯:
在python3再版,我做
>>> f = open('file.txt','r')
>>> f
(_io.TextIOWrapper name='file.txt' mode='r' encoding='cp1252')
所以,現在在我的計劃我的Python代碼將打開open('file.txt','r',encoding='cp1252')
文件。我正在運行很多正則表達式來查看這個文件,但它並沒有選擇它(我認爲它不是utf-8)。所以我只需要弄清楚如何從cp1252切換到UTF-8。謝謝@Mark Ransom
您需要確定原始文件的編碼,並在打開文件時使用該編碼,而不是'utf-8'。 – 2015-02-11 20:20:18
我該怎麼做?因爲當我在記事本中保存時,它只是說unicode – Jeremy 2015-02-11 20:33:00
好吧,我已經差不多了!在python3 repr中我發現文件的編碼是cp1252。現在我想我必須在打開文件後立即將其轉換爲utf-8 – Jeremy 2015-02-11 21:18:10