python数据类型的编码问题

很多人在遇到print函数输出list,tuple,json等数据类型时,查看编码总是对的,但是控制台看的数据总是被编码后的,一直找不到解决问题的办法,接下来我就给大家提供这几种数据类型正常输出的方法:

list和tuple的解决办法如下

In [4]: a = ("安康", "sdfads")

In [5]: a
Out[5]: ('\xe5\xae\x89\xe5\xba\xb7', 'sdfads')

In [6]: str(a).decode("string_escape")
Out[6]: "('\xe5\xae\x89\xe5\xba\xb7', 'sdfads')"

In [7]: print str(a).decode("string_escape")
('安康', 'sdfads')

In [8]: b = ["安康", "test"]

In [9]: b
Out[9]: ['\xe5\xae\x89\xe5\xba\xb7', 'test']

In [10]: str(b).decode("string_escape")
Out[10]: "['\xe5\xae\x89\xe5\xba\xb7', 'test']"

In [11]: print str(b).decode("string_escape")
['安康', 'test']

以上list或tuple的元素都要是utf-8编码的才可以,如果是unicode编码则无效

list示例:

In [12]: b.append("啊大大")

In [13]: b
Out[13]: ['\xe5\xae\x89\xe5\xba\xb7', 'test', '\xe5\x95\x8a\xe5\xa4\xa7\xe5\xa4\xa7']

In [14]: print str(b).decode("string_escape")
['安康', 'test', '啊大大']

In [15]: b.append(u"啊大大")

In [16]: print str(b).decode("string_escape")
['安康', 'test', '啊大大', u'\u554a\u5927\u5927']

tuple示例

In [19]: c = ("蓝色", u"阿达")

In [20]: c
Out[20]: ('\xe8\x93\x9d\xe8\x89\xb2', u'\u963f\u8fbe')

In [21]: print str(c).decode("string_escape")
('蓝色', u'\u963f\u8fbe')

json示例:

In [30]: dic = {"key": "练习"}

In [31]: dic
Out[31]: {'key': '\xe7\xbb\x83\xe4\xb9\xa0'}

In [32]: print dic
{'key': '\xe7\xbb\x83\xe4\xb9\xa0'}

In [33]: import json

In [34]: d = json.dumps(dic, ensure_ascii=False)

In [35]: d
Out[35]: '{"key": "\xe7\xbb\x83\xe4\xb9\xa0"}'

In [36]: print d
{"key": "练习"}

json格式的不在乎编码是什么,只要编码格式一致即可。


In [18]: a = "\xe7\xbb\x83\xe4\xb9\xa0"

In [19]: a
Out[19]: '\xe7\xbb\x83\xe4\xb9\xa0'

In [20]: print a
练习

In [21]: a = u"\xe7\xbb\x83\xe4\xb9\xa0"

In [22]: a
Out[22]: u'\xe7\xbb\x83\xe4\xb9\xa0'

In [23]: print a
ç»ä¹ 

In [24]: print a.encode("unicode-escape")
\xe7\xbb\x83\xe4\xb9\xa0

In [25]: print a.encode("unicode-escape").decode("string-escape")
练习

以上为utf-8与unicode编码互换,这个对很对字符编码的转换很有用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值