今天在学习python列表的时候遇到中文乱码问题,如下:
# -*- coding: UTF-8 -*-
print "列表"
list1 = ['张三',"李四","王二"]
list2 = [1,2,3,4,5]
list3 = ["1992","1234",25,120.5]
print list1
for i in list1:
print i;
print str(list1).decode('string_escape')
print list2
print list3
输出结果为:
列表
['\xe5\xbc\xa0\xe4\xb8\x89', '\xe6\x9d\x8e\xe5\x9b\x9b', '\xe7\x8e\x8b\xe4\xba\x8c']
张三
李四
王二
['张三', '李四', '王二']
[1, 2, 3, 4, 5]
['1992', '1234', 25, 120.5]
可以看到,在列表中有中文的时候,直接输出的结果会有乱码,但是不是列表的中文没有乱码,而且列表循环输出也不会乱码,在网上百度了一下,原因是:当输出list时,里面的元素按%r(调__repr__())处理,当输出str时,按%s(调__str__())处理。处理方法为:
print str(list1).decode('string_escape')
咋也不知道为啥要这样,咋也不敢问,反正是没有乱码了,但是这样的方法我认为是不可取的,因为不可能每次输出都在后面加上decode('string_escape'),希望后续可以找到其他方法