2013-01-15 15 views
5

ich Python neu bin, wenn ich versuche, "\ 20%" zu drucken, dieDrucken Verwirrung

>>>"\20%" 

warum ist der Shell-Druck '\ x10%' Das heißt, es zeigt

'\x10%' 

das gleiche mit schließen geschieht auch, wenn

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

zu tun ist, es zeigt

'test\x10%case' 

Ich benutze Python 2.7.3

Antwort

11

'\20' ist ein Oktal wörtliche und die gleiche wie chr(2 * 8 + 0) == chr(16).

Was der Python-Shell wird standardmäßig angezeigt nicht die Ausgabe von Druck, aber die repr esentation des angegebenen Wertes, der die hexadezimalen ist '\x10'.

Wenn Sie die Zeichenfolge \20% wollen, müssen Sie entweder die backaslash entkommen ('\\20%') oder verwenden Sie eine raw string literal (r'\20%'). Beide werden als

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

was sollte das Code ist so, dass die Zeichenfolgen wie erwartet verbunden werden – Pradyumna

+0

@perpetual Ich bin mir nicht sicher, was Sie wollen, aber am wahrscheinlichsten ist es "" \\ 20%. Join (l) ' – phihag

+0

Ich möchte die Ausgabe zu sein" Test \ 20% fall 'aber wenn ich "\\ 20%" mache. Beitreten (l) es zeigt' test \\ 20% fall ' – Pradyumna

2

\20 ist eine Escape-Sequenz, die deren Dezimalwert zum DLE ASCII-Zeichen bezeichnet ist, 16 (20 in oktaler 10 in hexadezimal). Ein solches Zeichen wird als \x10 hex escape durch die repr Funktion von Strings gedruckt.

Um ein Literal \20 anzugeben, verdoppeln Sie entweder den Backslash ("\\20") oder verwenden Sie eine rohe Zeichenfolge().

1

Zwei Druck "\20%"

was, wenn Sie direkt ausdrucken:

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

und sie mit r

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

Einige Zeit gleichen Zweifel String Ich hatte wieder und ich fragte a question, Sie kann nützlich sein

+0

danke der link für die frage ist wirklich hilfreich – Pradyumna

+0

@perpetual Welcom Perpetual ... :) –