很多人在遇到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编码互换,这个对很对字符编码的转换很有用