2013-02-19 22 views
5

Jak mogę wydrukować uciekł reprezentację ciąg znaków, na przykład jeśli mam:Drukuj uciekł reprezentację str

s = "String:\tA" 

pragnę wyjścia:

String:\tA 

na ekranie zamiast

String: A 

równoważnik działają w Java:

String xy = org.apache.commons.lang.StringEscapeUtils.escapeJava(yourString); 
System.out.println(xy); 

z Apache Commons Lang

+0

[Pytanie] (http://stackoverflow.com/questions/4202538/python-escape-special-characters) mogą być przedmiotem zainteresowania Ty, choć rozwiązanie ucieka nieco bardziej niż to, czego potrzebujesz .. – m01

Odpowiedz

16

chcesz zakodować ciąg z kodeka string_escape:

print s.encode('string_escape') 

lub można użyć repr() function, który zamieni ciąg na to pyton dosłowne przedstawienie tym cudzysłowów:

print repr(s) 

Demonstracja:

>>> s = "String:\tA" 
>>> print s.encode('string_escape') 
String:\tA 
>>> print repr(s) 
'String:\tA' 

W Pythonie 3, chcesz być patrząc na kodeku unicode_escape Zamiast:

print(s.encode('unicode_escape')) 

który wypisze wartość bajtów. Aby włączyć, że z powrotem do wartości Unicode, tylko dekodować z ASCII:

>>> s = "String:\tA" 
>>> print(s.encode('unicode_escape')) 
b'String:\\tA' 
>>> print(s.encode('unicode_escape').decode('ASCII')) 
String:\tA 
+0

Chcę tylko powtórzyć, że to jest miłe. Jako osoba, która pracuje prawie w całości w ASCII, nie myślę o kodowaniu bardzo często (chociaż staram się być bardziej uważna na te rzeczy). - Niestety, teraz, gdy jesteś najlepszą odpowiedzią, moja prawdopodobnie przestanie zdobywać upvotes ;-). – mgilson

+0

@mgilson Przygotowałem odpowiedź Martjina, ponieważ nie wiedziałem o istnieniu "string_escape" i odpowiedzi MGILSONA, ponieważ mam dobry humor :) – eyquem

8

można użyć repr:

print repr(s) 

demo

>>> s = "String:\tA" 
>>> print repr(s) 
'String:\tA' 

To daje cytaty - ale można łatwo kroić te off:

>>> print repr(s)[1:-1] 
String:\tA 
+1

Lub możesz kodować do 'string_escape'. :-) –

+1

@MartijnPieters - Nigdy wcześniej tego nie widziałem. schludny. +1 do twojej odpowiedzi :) – mgilson

0

Daj print repr(string) strzał

0

jak zawsze, jego łatwy w Pythonie:

print(repr(s)) 
0

print wykorzystuje str, który przetwarza ucieczek. Chcesz repr.

>>> a = "Hello\tbye\n" 
>>> print str(a) 
Hello bye 

>>> print repr(a) 
'Hello\tbye\n'