Python 內建的 csv 模組預設無法處理 UTF-16, 直接讀的話會出現
Error: line contains NULL byte
自行轉換編碼成 UTF-8 即可,作法如下:
import codecs import csv # 用 codecs 解碼 utf-16 為 unicode object f = codecs.open(filename, 'rU', 'utf-16') # 再轉回 utf-8 給 csv.reader 用 cr = csv.reader(line.encode('utf-8') for line in lines) for row in cr: # row 的內容就是 CSV parse 完的結果
或是先用 iconv 轉檔, 再用 Python csv 模組處理亦可:
$ iconv -f utf-16 -t utf-8 file_in_utf16 > file_in_utf8
備註: Python csv 模組不接受 unicode 的輸入,若來源不是檔案,也要記得轉成 utf-8 再傳入 csv.reader()
沒有留言:
張貼留言