[问题] 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