Python之print字典
在python 下面一个包含中文字符串的列表(list)或字典,直接使用print会出现以下的结果:
>>> adict={'a':'中文'} >>> print adict {'a': '\xe4\xb8\xad\xe6\x96\x87'}
在输出处理好的数据结构的时候很不方便,需要使用以下方法进行输出:
>>> print json.dumps(adict,encoding="UTF-8", ensure_ascii=False) {"a": "中文"}
具体原因呢??
对于第一种方式,python默认是使用ascii输出utf8字符
>>> import sys >>> sys.getdefaultencoding() 'ascii'
那意思是不是将这个改成utf8,就可以显示呢?
>>> reload(sys) <module 'sys' (built-in)> >>> sys.setdefaultencoding('utf8') >>> sys.getdefaultencoding() 'utf8' >>> >>> aidct={'a':'中文'} >>> print adict {'a': '\xe4\xb8\xad\xe6\x96\x87'}
依旧还是这样子!!!
【参考资料】
1、http://blog.163.com/typhoon_1986/blog/static/67887780201183044250416/
2、http://stackoverflow.com/questions/18337407/saving-utf-8-texts-in-json-dumps-as-utf8-not-as-u-escape-sequence