首页 > 在python中为什么包含在列表或字典中的汉字不能正常显示

在python中为什么包含在列表或字典中的汉字不能正常显示

In[9]: print "汉字"
汉字
In[10]: print ["汉字"]
['\xe6\xb1\x89\xe5\xad\x97']

为什么被包含在列表里时就显示成了\xe6\xb1\x89\xe5\xad\x97

写成

In[13]: print [u"汉字"]
[u'\u6c49\u5b57']

还是有这个问题


请用u"汉字"


参考http://www.thinksaas.cn/group/topic/349602/%20%7D

>>> import json
>>> print json.dumps(["汉字"],encoding="UTF-8")
["\u6c49\u5b57"]
>>> print json.dumps(["汉字"],encoding="UTF-8",ensure_ascii=False)
["汉字"]

怎么纠正的话, 楼上的方法是可以得,至于为什么这么设计,转一段话来说吧:

print一个对象,是输出其“为了给人(最终用户)阅读”而设计的输出形式,那么字符串中的转义字符需要转出来,而且 也不要带标识字符串边界的引号。
而在命令行下对对象求值,其输出是为了让程序员探求其内在特征,所以输出结果是对对象的描述。现在问题来了,一个list对象,本身就是个数据结构,如果要把它显示给最终用户看,而不是用于给程序员调试时,应该如何 “润色”输出格式呢?这显然应该交给程序员去根据应用的需要来做“润色”而不是显示一个用来表示list的方括号,里面却是 给最终用户看的“润色”过的结果。这种蹩脚输出,对最终用户 很不知所云,对程序员调试程序又没啥意义。

简单来说的话,列表作为一个数据结构,一般情况是不会直接给最终用户看俩括号,中间是一点内容的形式,而是要经过润色,就比如楼上的解法显示中文就是一种润色,还可以迭代输出也可以输出中文。而对程序员来说, 输出编码是更好的显示内在特征。

【热门文章】
【热门文章】