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

作者: Anny19 (安妮)   2016-04-19 15:17:04
各位高手好
我在把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
作者: octantis (@.@)   2016-04-19 17:23:00
with open('write_test2.csv', 'w', encoding='utf8')
作者: Anny19 (安妮)   2016-04-19 22:00:00
error msg說沒有encoding這個keyword argument耶XD對了, 我用python2.7, 試過codecs也不行
作者: alibuda174 (阿哩不達)   2016-04-19 23:45:00
2.7的open沒有encoding,要先from io import open
作者: Anny19 (安妮)   2016-04-20 13:21:00
還是在writerow那行被擋掉耶QQ
作者: alibuda174 (阿哩不達)   2016-04-20 15:21:00
改成newsdata[0].encode('utf-8')呢?

Links booklink

Contact Us: admin [ a t ] ucptt.com