2013-01-15 72 views
5

我是新來的蟒蛇當我嘗試打印「\ 20%」,也就是打印混亂

>>>"\20%" 

爲什麼是外殼印花「\ X10%」也就是說,它顯示

'\x10%' 

同樣與發生的事情也加入時做

>>>l = ['test','case'] 
>>>"\20%".join(l) 

它顯示

'test\x10%case' 

我使用Python 2.7.3

回答

11

'\20'是一個八進制,和同爲chr(2 * 8 + 0) == chr(16)

什麼Python的外殼默認顯示是打印的輸出,但repr esentation給定值,這是十六進制'\x10'的。

如果你希望字符串\20%,你必須要麼逃避backaslash('\\20%')或使用raw string literalr'\20%')。兩者都將被顯示爲

>>> r'\20%' 
'\\20%' 
+0

應該怎樣代碼是這樣,字符串按照我的預期加入 – Pradyumna

+0

@perpetual我不確定你想要什麼,但最有可能是'''\\ 20%'。join(l)' – phihag

+0

我希望輸出是'測試\ 20%case',但是當我做「\\ 20%」時,join(l)顯示'test \\ 20%case' – Pradyumna

2

\20是指DLE ASCII字符,其十進制值是16(八進制2010十六進制)的轉義序列。這樣的字符被打印爲\x10十六進制字符串的repr函數。

若要指定文字\20,請將反斜槓("\\20")加倍或使用原始字符串(r"\20")。

1

兩個打印"\20%"

,如果你直接打印:

>>> print '\20%' 
%      # some symbol not correctly display on this page 

,做好使用r

>>> print r'\20%' 
\20% 
>>> r'\20%'   # what r do. 
'\\20%' 
>>> print '\\20%'  
\20% 
>>> 

一段時間後,我有大約串同樣的懷疑,我問a question,你可能會發現有幫助

+0

謝謝你的問題鏈接真的有幫助 – Pradyumna

+0

@perpetual Welcom永恆...... :) –