前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python27中Json对中文的处理

Python27中Json对中文的处理

作者头像
用户1075292
发布2018-01-23 15:28:28
1.6K0
发布2018-01-23 15:28:28
举报
文章被收录于专栏:听雨堂听雨堂

应用场景如下:从api下载数据,json解析,存入字典,定期保存。重启程序需要加载保存的文本。

问题1:json中都是unicode串,存到文本里都是些\u***

解决:关闭ensure_ascii开关

json.dump(pub.listData,fp,ensure_ascii=False)

问题2:字典关键字用的数字,从文本load后变为unicode串

解决:

走了一点弯路,网上的解决方法,都是转换,把串转回utf-8,方法是 def byteify(input):     if isinstance(input, dict):         return {byteify(key):byteify(value) for key,value in input.iteritems()}     elif isinstance(input, list):         return [byteify(element) for element in input]     elif isinstance(input, unicode):         return input.encode('utf-8')     else:         return input

但发现,json相关的都是unicode,转不胜转。

最后解决方法,还是用unicode存,但是load后,加一个处理,把key转换为数值就行

pub.listData=json.load(fp)      pub.listData={int(k):v for k,v in pub.listData.items()}

问题3:编码问题

解决:

    默认情况下,用sys.getdefaultencoding()查看是utf-8     decode(code):把code转换为unicode     encode(code):把unicode转换为code

  如果对一个非unicode格式的串,调用encode的话,则会用默认编码转化为unicode,再进行encode。系统默认编码为ascii,所以常常出错

设置默认编码:

在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:

# encoding=utf8 

import sys 

reload(sys) 

sys.setdefaultencoding('utf8')

问题4:读入unicode的中文的处理

比如csv文件,excel正常,python读入数据类似:

[18]:'\xc2\xf2\xd2\xbb\xc1\xbf'

直接输出为乱码,需要解码再编码:

print df.columns[0].decode("gbk").encode('utf-8')

市场代码

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档