2013-01-15 20 views
5

Jestem nowy python, gdy próbuję wydrukować "\ 20%", czyliDrukuj zamieszanie

>>>"\20%" 

dlaczego jest druk shell '\ x10%' to znaczy, że wykazuje

'\x10%' 

to samo dzieje się z przyłączenia się także wtedy, gdy jest zrobić

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

pokazuje

'test\x10%case' 

Używam Pythona 2.7.3

Odpowiedz

11

'\20' jest ósemkowa dosłowne, i tak samo jak chr(2 * 8 + 0) == chr(16).

Co pytona powłoki wyświetla domyślnie jest nie wyjście z druku, ale repr esentation od podanej wartości, która jest szesnastkowy '\x10'.

Jeśli chcesz ciąg \20%, trzeba albo uciec backaslash ('\\20%') lub użyć raw string literal (r'\20%'). Oba będą wyświetlane jako

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

co powinien kodować tak, aby łańcuchy były złączone zgodnie z oczekiwaniami. – Pradyumna

+0

@perpetual Nie jestem pewien, czego chcesz, ale najprawdopodobniej jest to '' '\\ 20%'. join (l) ' – phihag

+0

Chcę, aby wynik był 'testowy \ 20% case ", ale kiedy to robię" \\ 20% ". Join (l) pokazuje" test \\ 20% case " – Pradyumna

2

\20 jest sekwencja ucieczki, który odnosi się do charakteru DLE ASCII, którego wartość dziesiętna wynosi 16 (20 w ósemkowym, 10 w systemie szesnastkowym). Taki znak jest drukowany jako ucieczka heksadecymalna \x10 przez funkcję ciągów znaków .

Aby określić literalny numer , należy podwoić lewy ukośnik ("\\20") lub użyć nieprzetworzonego ciągu znaków (r"\20").

1

Dwa druku "\20%"

co jeśli drukować bezpośrednio:

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

i nie używając r

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

Jakiś czas temu miałem ten sam wątpliwości co do łańcucha i poprosiłem a question, ty może okazać się pomocny:

+0

dziękuję link za pytanie jest naprawdę pomocne – Pradyumna

+0

@perpetual Welcom wieczyste ... :) –