讀取CSV預設編碼錯誤問題
各位好:
我想跟詢問,我在Day002_Sample.ipynb依照順序執行時,突然到這一段跳出了ERROR。
這個example.csv也是從上課講義上下載下來的csv檔。
請問是哪裡的編碼需要進行調整嗎?
fh = open("./data/example.csv")
f = fh.read()
fh.close()
print(f)
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-4-544ebfe30082> in <module>
1 fh = open("./data/example.csv")
----> 2 f = fh.read()
3 fh.close()
4
5 print(f)
UnicodeDecodeError: 'cp950' codec can't decode byte 0x8f in position 2: illegal multibyte sequence
回答列表
-
2019/11/27 上午 00:11楊哲寧贊同數:0不贊同數:0留言數:1
這是預設編碼不支援的問題,可以將open function 裡的 encoding 設定成'utf-8' 。
-
2019/11/27 上午 01:46張維元 (WeiYuan)贊同數:2不贊同數:1留言數:0
嗨,這個部分是讀檔的時候預設的編碼方式跟實際內容不同導致的錯誤。
不管你是用 Python 原生的 open/read 或是 Pandas 提供的 read_csv 方法,都可以再開檔的時候指定 encoding 參數。
假設要使用 utf-8 編碼方式存取檔案,使用方法如下:
```
encoding ='utf-8'
f =open('filename.txt','r', encoding=encoding)
text = f.read()
f.close()
```
另外一種常見的問題是,可能不知道原始檔案的編碼方式為何,可以透過 chardet 工具來查詢:
```
import chardet
with open('filename.txt','rb')as f:
result = chardet.detect(f.read())
```
最後科普一下幾種常見的編碼格式:
* Unicode/UTF8:萬國碼,可支援多種語言的編碼格式
* ISO-8859-1/latin1:主要用於歐系國家的文字
* Big5:繁體中文
* GBK:簡體中文
* cp950:windows 預設的編碼