博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python27中Json对中文的处理
阅读量:6290 次
发布时间:2019-06-22

本文共 1126 字,大约阅读时间需要 3 分钟。

应用场景如下:从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')

市场代码

转载地址:http://mkkta.baihongyu.com/

你可能感兴趣的文章
垂直剧中
查看>>
C语言版推箱子
查看>>
BeanPostProcessor出现init方法无法被调用Invocation of init method failed
查看>>
WIN7 X64的运行命令窗口
查看>>
JS Promise API
查看>>
探究JS中的连等赋值问题
查看>>
113. Path Sum II
查看>>
小程序 显示Toobar
查看>>
react列表数据显示
查看>>
SpringMVC中与Spring相关的@注解
查看>>
在线求助 man page(转)
查看>>
Android基础控件SeekBar拖动条的使用
查看>>
PTA基础编程题目集6-2多项式求值(函数题)
查看>>
中国大学MOOC-JAVA学习(浙大翁恺)—— 信号报告
查看>>
Linux下Firefox汉化方法
查看>>
OC API
查看>>
Java遍历包中所有类方法注解
查看>>
[JLOI2014]松鼠的新家
查看>>
struts2 ognl 调用静态方法
查看>>
微软职位内部推荐-Senior Software Engineer
查看>>