Why do I get the u“xyz” format when I print a list of unicode strings in Python?

前端 未结 3 1302
北恋
北恋 2020-12-18 16:31

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,         


        
相关标签:
3条回答
  • 2020-12-18 16:35

    You get this because lists can contain any number of elements, of mixed types. In the second case, instead of printing unicode strings, you're printing the list itself - which is very different than printing the list contents.

    Since the list can contain anything, you get the u'foo' syntax. If you were using non-unicode strings, you'd see the 'foo' instead of just foo, as well.

    0 讨论(0)
  • 2020-12-18 16:36

    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.

    0 讨论(0)
  • 2020-12-18 16:58

    Objects in Python have two ways to be turned into strings: roughly speaking, str() produces human readable output, and repr() produces computer-readable output. When you print something, it uses str().

    But the str() of a list uses the repr() of its elements.

    0 讨论(0)
提交回复
热议问题