2013-01-15 4 views
5

Je suis nouveau à python quand je tente d'imprimer "\ 20%" qui estImprimer confusion

>>>"\20%" 

pourquoi l'impression shell \ x10% »qui est, elle manifeste

'\x10%' 

la même chose se passe avec JOIN aussi quand do

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

il montre

'test\x10%case' 

J'utilise python 2.7.3

Répondre

11

'\20' est un octal littéral, et la même chose que chr(2 * 8 + 0) == chr(16).

Qu'est-ce que le shell Python affiche par défaut est pas la sortie de l'impression, mais le repr esentation de la valeur donnée, qui est le hexadécimal '\x10'.

Si vous voulez que la chaîne \20%, vous devez soit échapper à la backaslash ('\\20%') ou utiliser un raw string literal (r'\20%'). Les deux seront affichés comme

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

que devrait le code soit pour que les chaînes soient jointes comme je l'espérais – Pradyumna

+0

@perpetual Je ne suis pas sûr de ce que vous voulez, mais très probablement c'est '' '\\ 20%'. join (l) ' – phihag

+0

je veux que la sortie soit 'test \ 20% case 'mais quand je fais "\\ 20%". Join (l) il montre' test \\ 20% case ' – Pradyumna

2

\20 est une séquence d'échappement qui fait référence au caractère DLE ASCII dont la valeur décimale est 16 (20 en octal, 10 en hexadécimal). Un tel caractère est imprimé comme l'échappement hexadécimal \x10 par la fonction repr des chaînes.

Pour spécifier un littéral \20, soit le double de la barre oblique inverse ("\\20") ou utiliser une chaîne brute (r"\20").

1

Deux impression "\20%"

si vous imprimez directement:

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

et n'utilisant r

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

Il y a quelque temps que j'avais même doute sur la chaîne et je demande a question, vous peut trouver utile

+0

merci le lien pour la question est vraiment utile – Pradyumna

+0

@perpetual Welcom perpetual ... :) –