使用python打印列表

时间:2011-03-21 10:43:43

标签: python

我有一个从excel单元格编译的列表,使用python - 比如listlist。单元格/列表中的每个元素都是unicode。当我将列表打印为

print listlist

我看到'u'被添加到列表的每个成员之前。但是当我打印像

这样的列表时
for member in listlist:
  print member

我没有看到'u'在会员面前。

有人可以向我解释为什么会有这种差异?它是在xlrd模块中定义的吗?

4 个答案:

答案 0 :(得分:6)

这是因为print list等同于

print "[", ", ".join(repr(i) for i in list), "]"
对于unicode字符串,

repr(s)u"blabla",而print s仅打印blabla

答案 1 :(得分:4)

打印列表时,它使用对象的__repr__

显示列表中的每个对象

单独打印对象时,它使用对象的__str__

答案 2 :(得分:3)

有两种方法可以将Python值转换为字符串strrepr(及其等效的类方法__str____repr__)。不同之处在于这两个功能。来自Python tutorial

  

str()函数用于返回值相当于人类可读的值的表示,而repr()用于生成可由解释器读取的表示(或者如果没有等效的语法,则强制执行SyntaxError )。

print语句会在您传入的对象上调用str,但列表的__str__方法会在其值上调用repr。列表的值是unicode字符串。在人类可读的形式中,它的unicode是无关紧要的,因此你不会得到u,甚至引用标记。以计算机可读形式,这很重要,因此包含u

答案 3 :(得分:1)

当您打印列表时,python会打印列表的表示。

列表的默认表示是打印一个左方括号([),然后是用逗号(,)分隔的每个元素的表示,一个右方括号({{ 1}})。 (确切地说,对象的表示是在调用其]成员时返回的内容)。请注意,unicode字符串的默认表示形式为__repr__()

现在,当您打印字符串时,您不打印字符串的表示,而是打印字符串(通过调用u'...'成员返回的值)。并且字符串不包括格式化字符,如unicode标志,引号等......