Please observe the following behavior:
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,
The result is:
foo bár
[u'foo', u'b\xe1r']
foo bár
When I just print the two values sitting in variables a and b, I get what I expect; when I put the string values in a list and print it, I get the unwanted u"xyz" form; finally, when I print values from the list with a loop, I get the first form again. Can someone please explain this seemingly odd behavior? I know there’s probably a good reason.
When you print a list, you get the
repr()of each element, lists aren’t really meant to be printed, so python tries to print something representative of it’s structure.If you want to format it in any particular way, either be explicit about how you want it formatted, or override it’s
__repr__method.