需要Python中的元组帮助
当我打印这个元组 (u'1S²')
时,我得到的输出是 1S²
。
但是,当我打印这个元组 (u'1S²',u'2S¹')
时,我得到的输出是 (u'1S\xb2', u'2S\xb9')
。
这是为什么呢?我该怎么处理这个问题呢?
另外,我怎么才能知道元组里有多少个项目呢?
4 个回答
1
(u'1S²')
不是一个元组。(u'1S²',)
是一个包含 u'1S²' 的元组。len((u'1S²',))
会返回这个元组的长度,也就是 1。
另外,在打印变量时,要注意有两种输出方式:
- 一种是对程序员友好的对象字符串表示:也就是
repr(the_object)
- 另一种是对象的文本表示,主要适用于字符串
如果第二种表示不可用,就会使用第一种。和字符串不同,元组没有文本表示,因此会使用对程序员友好的表示来展示元组及其内容。
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
4
表达式 (u'1S²')
其实不是一个 元组
,而是一个 unicode
值。一个一元组在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
函数。