当我打印元组(u'1S²')
时,我得到1S²
的预测输出
但是,当我打印元组(u'1S²',u'2S¹')
时,我得到输出(u'1S\xb2', u'2S\xb9')
。
这是为什么?我该怎么办?
另外,如何获取元组中的项目数?
答案 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