各位高手好
我在把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