当我在Python中打印unicode字符串列表时,为什么会得到u"xyz"格式?

I. *_*edy 1 python unicode list

请注意以下行为:

a = u"foo"
b = u"b\xe1r"   # \xe1 is an 'a' with an accent
s = [a, b]

print a, b
print s
for x in s: print x,
Run Code Online (Sandbox Code Playgroud)

结果是:

foo bár
[u'foo', u'b\xe1r']
foo bár
Run Code Online (Sandbox Code Playgroud)

当我刚打印出两个值坐在变量ab,我得到了我期待; 当我将字符串值放在列表中并打印出来时,我得到了不需要的u"xyz"形式; 最后,当我用循环打印列表中的值时,我再次获得第一个表单.有人可以解释这个看似奇怪的行为吗?我知道这可能是一个很好的理由.

ric*_*cho 7

当你打印一个列表时,你会得到repr()每个元素,列表并不是真的要打印,所以python尝试打印一些代表它结构的东西.

如果您想以任何特定方式对其进行格式化,请明确说明您希望如何格式化,或者覆盖它的__repr__方法.