看板 Python 關於我們 聯絡資訊
各位高手好 我在把json檔轉成csv檔時,遇到轉碼問題 我把原始json檔案讀進來,原始檔裡是好幾個documents全部擠在一行裡 所以用readline一口氣讀到jdata jdata的長相是一個list,裡面是dictionaries, jdata=[{...},{...},{...}] ... import json with open('test.json', 'r') as fin: jdata = json.loads(fin.readline()) ... dictionary裡的內容有中、英文,測試過裡面內容是unicode ... print type(jdata[0]['title']) >><type 'unicode'> ... 接著我試著先把第一個dictionary寫到csv檔裡 ... import csv with open('write_test2.csv', 'w') as fout: fieldnames = ['category','content','date','title','url','hitcount',\ 'comp','keyw'] csvout = csv.DictWriter(fout,fieldnames=fieldnames) csvout.writeheader() csvout.writerow(newsdata[0]) ... 在最後一行 writerow 出現 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 我查了官方 csv module不支援unicode 我現在不知道該在哪一步就該先轉碼, 然後轉什麼碼(encode('utf-8')?我只會這招 ><) 尤其是不知道怎麼處理dictionary, 難道要一個個抓出來改嗎?(jdata[0][category].encode('utf-8') 求高手指點 QQ 文長感謝耐心收看 附上原始檔連結 https://www.dropbox.com/s/yugkofeswqpdlhl/test.json?dl=0 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.73.127 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1461050226.A.638.html ※ 編輯: Anny19 (1.163.73.127), 04/19/2016 15:22:38
octantis: with open('write_test2.csv', 'w', encoding='utf8') 04/19 17:23
Anny19: error msg說沒有encoding這個keyword argument耶XD 04/19 22:00
Anny19: 對了, 我用python2.7, 試過codecs也不行 04/19 22:02
alibuda174: 2.7的open沒有encoding,要先from io import open 04/19 23:45
Anny19: 還是在writerow那行被擋掉耶QQ 04/20 13:21
alibuda174: 改成newsdata[0].encode('utf-8')呢? 04/20 15:21