资讯专栏INFORMATION COLUMN

Python2 JSON.load成Unicode的坑

clasnake / 2891人阅读

摘要:我是接口调用方,今天在联调的时候,接口方的同学问我传过来的是神马玩意,怎么每个前还带个的。一通发现是自带的库会把文件成对象。如果想要变成对象的话,就要自己去。使用里的来代替官方自带的可能更好。

我是接口调用方,今天在联调的时候,接口方的同学问我传过来的json是神马玩意,怎么每个item前还带个u的。
我看了一眼,我靠,还真是带个u的,自己调试的时候楞是没发现。也怪自己以前没怎么遇到过Python的编码坑,这次重新用起Python2来,一不小心就踩进坑了。
一通debug发现是Python自带的Json库会把json文件load成Unicode对象。如果想要变成str对象的话,就要自己去encode。
祭出so大法...#请叫我so搬运工

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

这个函数递归的把list和dict里的Unicode对象encode成str。
当然,我不觉得这是the right way。使用yaml里的json来代替官方自带的json可能更好。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37540.html

相关文章

  • Python2.x 字符编码终极指南

    摘要:值得注意的是,有的编码方案不一定能表示某些信息,这时编码就会失败,比如就不能用来表示中文。数组的每一项是一个字节,用来表示。所以对于字符串来说,其长度等于编码后字节的长度。所以,让来编码解码中文,就超出了其能力范围。 在人机交互之字符编码 一文中对字符编码进行了详细的讨论,并通过一些简单的小程序验证了我们对于字符编码的认识。但仅了解这篇文章的内容,并不能帮我们在日常编程中躲过一些字符编...

    Amio 评论0 收藏0
  • Python: 熟悉又陌生的字符编码

    摘要:常见的字符编码有编码,编码,编码等。码只规定了个字符的编码,这在美国是够用的。小结是一种针对的可变长度字符编码,它是的实现方式之一。 字符编码是计算机编程中不可回避的问题,不管你用 Python2 还是 Python3,亦或是 C++, Java 等,我都觉得非常有必要厘清计算机中的字符编码概念。本文主要分以下几个部分介绍: 基本概念 常见字符编码简介 Python 的默认编码 Py...

    Vultr 评论0 收藏0
  • unicode和utf8 —— 从一个遍历文件名的脚本,谈谈对Python2和Python3中字符编

    摘要:如果传一个中文,下和下编码分别是和,可以自己用打印看看文件中写死,本来理解是跟这个文件本身编码有关,但文件编码同样是的情况下,下打印了的超集,下仍然是。 对编码问题一直一知半解,之前也是得过且过,正好有个同事要我帮忙写个脚本,涉及这方面的问题,借这个契机研究了一下. 先贴几篇比较好的: 1.阮老师的上古文章(07年…),虽然古老但对理解帮助很大,从最基础讲起,逻辑清晰易理解. (ps:...

    宠来也 评论0 收藏0
  • Python入门-基本语法1

    摘要:根据有效范围作用域分为全局变量和局部变量。类型以开头标识类型以开头标识类型以进制的字节码表示,实际上是一个字节串,回应了它的另一个名字。 < 返回索引页 基本语法 Hello World 代码注释 关键字 数据类型 变量、常量 变量 变量赋值 变量命名 变量的作用域 常量 字符串与编码 字符转义 字符编码 字符串操作 运算符与表达式 运算符 表达式 ...

    ingood 评论0 收藏0
  • 聊聊Python 3 的字符串:str 和 bytes 的区别

    摘要:的字符串有两种和,的字符串也有两种和。不同字符的不同表现,让的和显得扑朔迷离。在中,严格区分了和,不同类型之间操作就会抛出的异常。和之间的转换一图胜千言和的相互转换指的是具体的编码规则的名称,对于中文来说,它可以是这些值等等。 Python2的字符串有两种:str 和 unicode,Python3的字符串也有两种:str 和 bytes。Python2 的 str 相当于 Pytho...

    AWang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<