【Python】append以后中文为什么会显示成unicode??

Youthening 2015-02-11 03:46:45
# -*- coding: UTF-8 -*-
#!/usr/bin/python
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

Receiver = {u'小明':'137',u'小红':'150',u'小兵':'185'}
name_list = []
for x in Receiver:
name_list.append(x)
print x

print name_list

结果显示:
小明
小兵
小红
[u'\u5c0f\u660e', u'\u5c0f\u5175', u'\u5c0f\u7ea2']

这段程序,为什么直接x打印中文是没问题的,可是我append以后,就显示成unicode格式?我经常碰到这种情况,求大神解决。
...全文
658 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeky_zhang2013 2015-02-15
  • 打赏
  • 举报
回复
每一个工具都有自己的编码,在转换的过程中有时不是我们想要的,Python系统编码和工具平台的编码有时也会混淆
  • 打赏
  • 举报
回复
http://blog.csdn.net/a921800467b/article/details/8579510 这里详细解释了为什么print语句容易出现编码问题 控制台输出方式往往不会是我们工作中需要的最后结果,可以不用太过在意。
黑泡泡选手 2015-02-12
  • 打赏
  • 举报
回复
跟你设置的默认编码有关系~
Youthening 2015-02-12
  • 打赏
  • 举报
回复
引用 1 楼 jiht594 的回复:

# -*- coding: UTF-8 -*-
def printlist (alist):
    liststr = ''
    for ele in alist:
        liststr = liststr + ele + ','
    return "[" + liststr[:-1] +  "]" 
#BEGIN#####################################
Receiver = {u'小明':'137',u'小红':'150',u'小兵':'185'}
name_list = []
for x in Receiver:
    name_list.append(x)
print printlist(name_list)
为什么和系统较劲
大神,可以简单解释一下,为什么会这样子吗?我经常会碰到这种情况
乔巴好萌 2015-02-12
  • 打赏
  • 举报
回复
你这结帖率不高啊 print 一个对象时,默认的是调用这个对象的__str__(self)方法 所以下面2者输出是一样的 # -*- coding: UTF-8 -*- #!/usr/bin/python import sys reload(sys) sys.setdefaultencoding("utf-8") Receiver = {u'小明':'137',u'小红':'150',u'小兵':'185'} name_list = [] for x in Receiver: name_list.append(x) print x print str(name_list) == name_list.__str__() 也就是说 print name_list 实际上是打印了name_list.__str__(self)的返回值 那你就重载下__str__方法即可 # -*- coding: UTF-8 -*- #!/usr/bin/python import sys reload(sys) sys.setdefaultencoding("utf-8") class MyList(list): def __str__(self): retval = "[" for item in self: retval += '"' retval += item retval += '"' retval += "," retval = retval.rstrip(",") retval += "]" return retval Receiver = {u'小明':'137',u'小红':'150',u'小兵':'185'} name_list = MyList() for x in Receiver: name_list.append(x) print x print name_list
jiht594 2015-02-11
  • 打赏
  • 举报
回复

# -*- coding: UTF-8 -*-
def printlist (alist):
    liststr = ''
    for ele in alist:
        liststr = liststr + ele + ','
    return "[" + liststr[:-1] +  "]" 

#BEGIN#####################################
Receiver = {u'小明':'137',u'小红':'150',u'小兵':'185'}
name_list = []
for x in Receiver:
    name_list.append(x)

print printlist(name_list)
为什么和系统较劲

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧