2014-12-28 52 views
0

如何忽略字符串中的所有轉義字符?在Python中使用替換方法

外匯:\n \t %s

所以,如果我有一個字符串:

text = "Hello \n My Name is \t John" 

現在,如果我打印字符串輸出會比實際的字符串不同:

 
Hello 
My Name is  John 

我怎樣才能打印這樣的'實際字符串':

 
Hello \n My Name is \t John 

下面是一個例子,它不工作:

text = "Hello \n My Name is \t John" 
text.replace('\n', '\\n').replace('\t', '\\t') 
print text 

這不起作用!沒有區別

我看了一些主題,你可以刪除它們,但我不想這樣。我如何忽略它們?所以我們可以看到實際的字符串?

+0

'str.replace'不能正常工作。您必須將返回值分配回您的變量。 –

+0

你問如何忽略所有轉義字符,並檢查一個答案是不是關於這一點。邏輯! – GLHF

+0

[Python:使用打印語句時顯示特殊字符]的可能重複(http://stackoverflow.com/questions/6477823/python-display-special-characters-when-using-print-statement) – Joe

回答

1

你的方法沒有奏效,因爲字符串是不可變的。您需要重新分配text.replace(...)以使其正常工作。

>>> text = text.replace('\n', '\\n').replace('\t', '\\t') 
>>> print text 
Hello \n My Name is \t John 
1

您可以撥打字符串repr打印前:

>>> text = "Hello \n My Name is \t John" 
>>> print repr(text) 
'Hello \n My Name is \t John' 
>>> print repr(text)[1:-1] # [1:-1] will get rid of the ' on each end 
Hello \n My Name is \t John 
>>> 
0

小,但非常有用的方法,使用[R

a=r"Hey\nGuys\tsup?" 
print (a) 

輸出:

>>> 
Hey\nGuys\tsup? 
>>> 

因此,對於您的問題:

text =r"Hello\nMy Name is\t John" 
text = text.replace(r'\n', r'\\n').replace(r'\t', r'\\t') 
print (text) 

輸出:

>>> 
Hello\\nMy Name is\\t John 
>>> 

您必須定義文本變量AGAIN,因爲字符串是不可變的。