[問題] json轉csv遇到編碼問題

看板Python作者 (安妮)時間9年前 (2016/04/19 15:17), 9年前編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
各位高手好 我在把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

04/19 17:23, , 1F
with open('write_test2.csv', 'w', encoding='utf8')
04/19 17:23, 1F

04/19 22:00, , 2F
error msg說沒有encoding這個keyword argument耶XD
04/19 22:00, 2F

04/19 22:02, , 3F
對了, 我用python2.7, 試過codecs也不行
04/19 22:02, 3F

04/19 23:45, , 4F
2.7的open沒有encoding,要先from io import open
04/19 23:45, 4F

04/20 13:21, , 5F
還是在writerow那行被擋掉耶QQ
04/20 13:21, 5F

04/20 15:21, , 6F
改成newsdata[0].encode('utf-8')呢?
04/20 15:21, 6F
文章代碼(AID): #1N5TjoOu (Python)
文章代碼(AID): #1N5TjoOu (Python)