2013-03-13 32 views
38

我希望在打印從別處檢索到的字符串時,顯示新行\n。因此,如果字符串爲「ABC \ NDEF」我不希望這樣的事情發生:在Python中,打印字符串時是否可以轉義換行符?

>>> print(line) 
abc 
def 

,而是這樣的:

>>> print(line) 
abc\ndef 

是否有修改打印或修改參數的方式,或者完全可能是另一個功能來完成這個任務?

回答

42

另一種方式,你可以使用轉義字符停止蟒蛇是使用原始字符串是這樣的:

>>> print(r"abc\ndef") 
abc\ndef 

>>> string = "abc\ndef" 
>>> print (repr(string)) 
>>> 'abc\ndef' 

使用repr()是,它使得你的字符串中的單引號的唯一proplem,它可以,如果你想使用一個報價得心應手

+0

謝謝,這正是我正在尋找的。選擇作爲答案,因爲你給了兩種不同的選擇。 – Tyler 2013-03-13 18:33:56

64

只需使用'string_escape'編解碼器對其進行編碼即可。

>>> print "foo\nbar".encode('string_escape') 
foo\nbar 

在python3,'string_escape'已成爲unicode_escape。此外,我們需要多一點謹慎字節/ unicode的,因此涉及到編碼後的解碼:

>>> print("foo\nbar".encode("unicode_escape").decode("utf-8")) 

unicode_escape reference

+0

這工作,謝謝一堆。 – Tyler 2013-03-13 18:34:13

+2

如果字符串來自一個DOM對象,可能需要使用'unicode-escape'而不是'string_escape' – 2014-11-30 22:35:19

+2

Python 3中的等價物就像''foo \ nbar「.encode('utf8')。decode 'unicode_escape')'。 – Simon 2016-04-21 07:40:28

16

簡單的方法:如果你想 str_object.replace("\n", "\\n")

其他方法更好顯示全部轉義字符,但如果你關心的只是換行符,只需使用直接替換。

+0

我認爲,但最終是的,我想要所有逃脫字符。 – Tyler 2013-03-13 18:34:43

+0

這不適用於2.7。使用'str_object.replace(r「\ n」,r「\\ n」)''。 – WeirdElfB0y 2017-02-10 10:35:28

+0

不,不,不! Python 2.7和Python 3沒有區別。請按照答案的說法做。 '替換(r「\ n」,r「\\ n」)'是無用的,它不會觸及換行符。 – alexis 2018-01-27 21:21:49

相關問題