2010-09-09 82 views
1

元組幫我打印元組(u'1S²')我得到的1S²需要與蟒蛇

但是所預測的輸出,當我打印的元組(u'1S²',u'2S¹')我得到的輸出(u'1S\xb2', u'2S\xb9')

這是爲什麼?我能做些什麼呢?
另外,如何獲取元組中的項目數?

回答

4

表達式(u'1S²')不是tuple,這是一個unicode的值。這種方式使用Python編寫1元組:(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) 

的元組,列表,字符串和其他序列iterms可以使用len功能獲得的數量。

2

你有什麼平臺和Python版本?我沒有看到這種行爲。我總是得到\x轉義序列與Python 2.6:

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 
+0

我看到在Linux上使用v2.6.5相同的行爲。單個元素元組的註釋+1。 – Johnsyweb 2010-09-09 20:25:36

2

(u'1S²')不是一個元組。 (u'1S²',)是一個包含u'1S²'的元組。 len((u'1S²',))返回元組的長度,即,1.

也,打印變量時,當心有2種類型的輸出:

  • 對象的程序員友好字符串表示:即repr(the_object)
  • 對象的文本表示,大多適用於串

如果第二不availlable,第一被使用。與字符串不同,元組沒有文本表示,因此程序員友好的表示形式用於表示元組及其內容。

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',) 

發生了什麼事,當你打印一個元組,你會得到它的每一個部件的再版()是。要打印組件,請按索引單獨解決它們。你可以得到一個元組與LEN(長度):

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