我有一个使用python从excel单元格编译的列表 - 比如listlist
。单元/列表中的每个元素都是unicode。当我打印列表为使用python打印一个列表
print listlist
我看到“U”前置到列表中的每个成员。但是,当我打印的清单像
for member in listlist:
print member
我没有看到“U”前置到成员。
有人可以向我解释为什么有这种差异?它是否在xlrd模块中定义?
我有一个使用python从excel单元格编译的列表 - 比如listlist
。单元/列表中的每个元素都是unicode。当我打印列表为使用python打印一个列表
print listlist
我看到“U”前置到列表中的每个成员。但是,当我打印的清单像
for member in listlist:
print member
我没有看到“U”前置到成员。
有人可以向我解释为什么有这种差异?它是否在xlrd模块中定义?
这是因为print list
相当于
print "[", ", ".join(repr(i) for i in list), "]"
repr(s)
是u"blabla"
为unicode字符串,而只有print s
打印blabla
。
当打印清单,其使用对象的__repr__
当单独打印物体,它使用对象的__str__
当你打印列表,蟒蛇打印的表示显示在列表中的每个对象的名单。
列表的默认表示是打印的开口方括号([
),然后用逗号(,
)分离的每个元素的所述表示,该闭方括号(]
)。 (准确地说,一个对象的表示形式是调用它的__repr__()
成员时返回的内容)。请注意,unicode字符串的默认表示形式是u'...'
。
现在,当你打印一个字符串,不打印字符串的表示,要打印的字符串(通过调用__str__()
成员返回的值)。和字符串不包括格式化字符如Unicode的标志,报价等..
有两种方法把一个Python值转换成字符串str
和repr
(等效类的方法__str__
和__repr__
)。差异来自这两个功能。从Python tutorial:
的STR()函数是指以返回其是相当人类可读的值的表示,而再版()是指,以产生可以由解释器来读取(或将强制表示如果没有等效语法,则返回SyntaxError)。
的print
声明要求您通过在物体上str
,但名单的__str__
方法调用它的价值观repr
。您的列表的值是unicode字符串。以可读的形式,它的unicode实际上是无用的,所以你不会得到u
,甚至不会引用标记。在计算机可读形式中很重要,因此包含u
。
谢谢。这解释了它。 – Sumod 2011-03-21 11:13:52