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

发布于 2022-09-02 10:44:49 字数 263 浏览 18 评论 0

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']

还是有这个问题

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浅黛梨妆こ 2022-09-09 10:44:49

请用u"汉字"

凑诗 2022-09-09 10:44:49

参考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)
["汉字"]
紙鸢 2022-09-09 10:44:49

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文