2013-02-19 18 views
5

如何打印字符串的轉義表示,例如,如果我有:打印逃過海峽的表示

s = "String:\tA" 

我想輸出:

String:\tA 

的屏幕,而不是上

String: A 

在Java中等效功能是:

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

Apache Commons Lang

+0

[這個問題](http://stackoverflow.com/questions/4202538/python-escape-special-characters)可能會感興趣的你,雖然解決方案逃脫了一點比你想要的更多.. – m01 2013-02-19 15:19:36

回答

16

你想與string_escape編解碼器的字符串編碼:

print s.encode('string_escape') 

,或者您可以使用repr() function,它將把字符串轉換成它的蟒蛇文字表示包括引號

print repr(s) 

示範:

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

在Python 3,你會尋找unicode_escape編解碼器來代替:

print(s.encode('unicode_escape')) 

,它將打印一個字節的值。把這一回一個Unicode值,從ASCII剛剛解碼:

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

我只想再說一遍,這是整潔。作爲一個幾乎完全以ASCII工作的人,我不會經常想到編碼 - (儘管我試圖更加註意那些東西)。 - 不幸的是,現在你是最好的答案,我的可能會停止獲得upvotes ;-)。 – mgilson 2013-02-19 15:36:14

+0

@mgilson我upvote Martjin的答案,因爲我不知道'string_escape'和mgilson的答案的存在,因爲我在一個很好的幽默:) – eyquem 2013-02-19 16:03:55

8

您可以使用repr

print repr(s) 

演示

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

這將給報價 - 但你可以切片那些容易脫落:

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

或者你可以編碼爲'string_escape'。 :-) – 2013-02-19 15:20:45

+1

@MartijnPieters - 之前從未見過。整齊。 +1給你的回答:) – mgilson 2013-02-19 15:22:53

0

print repr(string)一個鏡頭

0

與以往一樣,它很容易在Python:

print(repr(s)) 
0

print使用str,它處理逃逸。你想要repr

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

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