在python中需要有关元组的帮助

时间:2010-09-09 20:17:37

标签: python tuples

当我打印元组(u'1S²')时,我得到1S²的预测输出

但是,当我打印元组(u'1S²',u'2S¹')时,我得到输出(u'1S\xb2', u'2S\xb9')

这是为什么?我该怎么办?
另外,如何获取元组中的项目数?

4 个答案:

答案 0 :(得分:4)

表达式(u'1S²')不是tuple,而是unicode值。 1-tuple用Python编写:(u'1S²',)

print value语句实际上打印了str(value)。如果您需要输出多个unicode字符串,则应使用以下内容:

print u' '.join((u'1S²',u'2S¹'))

尽管字符编码可能存在问题。如果您知道自己的控制台编码,则可以手动将unicode值编码为str

ENCODING = 'utf-8'
print u' '.join((u'1S²',u'2S¹')).encode(ENCODING)

可以使用len函数获取元组,列表,字符串和其他序列中的iterms数。

答案 1 :(得分:2)

你有什么平台和Python版本?我没有看到这种行为。我总是使用Python 2.6获取\x转义序列:

Python 2.6.5 (r265:79063, Apr 26 2010, 10:14:53)
>>> (u'1S²')
u'1S\xb2'
>>> (u'1S²',)
(u'1S\xb2',)
>>> (u'1S²',u'1S¹')
(u'1S\xb2', u'1S\xb9')

作为旁注,(u'1S²')不是元组,它只是一个带有圆括号的字符串。之后您需要一个逗号来创建单个元素元组:(u'1S²',)

关于项目数量,请使用len

>>> len((u'1S²',u'1S¹'))
2

答案 2 :(得分:1)

(u'1S²')不是元组。 (u'1S²',)是一个包含u'1S²'的元组。 len((u'1S²',))返回元组的长度,即1。

同样,在打印变量时,请注意有两种类型的输出:

  • 对象的程序员友好字符串表示:即repr(the_object)
  • 对象的文本表示,主要适用于字符串

如果第二个不可用,则使用第一个。与字符串不同,元组没有文本表示,因此程序员友好表示用于表示元组及其内容。

答案 3 :(得分:1)

你的第一个例子(u'1S²')实际上不是一个元组,它是一个unicode字符串!

>>> t = (u'1S²')
>>> type(t)
<type 'unicode'>
>>> print t
1S²

逗号是使其成为元组的原因:

>>> t = (u'1S²',)
>>> type(t)
<type 'tuple'>
>>> print t
(u'1S\xb2',)

当你打印一个元组时,你会得到每个组件的repr()。要打印组件,请通过索引单独解决它们。您可以使用len()获取元组的长度:

>>> print t[0]
1S²
>>> len(t)
1