作者Anny19 (安妮)
看板Python
标题[问题] json转csv遇到编码问题
时间Tue Apr 19 15:17:04 2016
各位高手好
我在把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://webptt.com/cn.aspx?n=bbs/Python/M.1461050226.A.638.html
※ 编辑: Anny19 (1.163.73.127), 04/19/2016 15:22:38
1F:→ octantis: with open('write_test2.csv', 'w', encoding='utf8') 04/19 17:23
2F:→ Anny19: error msg说没有encoding这个keyword argument耶XD 04/19 22:00
3F:→ Anny19: 对了, 我用python2.7, 试过codecs也不行 04/19 22:02
4F:→ alibuda174: 2.7的open没有encoding,要先from io import open 04/19 23:45
5F:→ Anny19: 还是在writerow那行被挡掉耶QQ 04/20 13:21
6F:→ alibuda174: 改成newsdata[0].encode('utf-8')呢? 04/20 15:21