2014-12-25 35 views
4

我喜歡Python交互式解釋器打印字符串的方式,我想在腳本中專門重複這一點。但是,我似乎無法做到這一點。打印字符串「like」交互式解釋器?

例子。我可以解釋這樣做:

>>> a="d\x04" 
>>> a 
'd\x04' 

不過,我不能在自己

$ python -c 'a="d\x04";print a' 
d 

我想這蟒蛇,因爲我要調試的代碼有很多字符串的類似非複製此可打印字符。

有沒有簡單的方法來做到這一點?

+2

'打印( 「{!R}」 格式(一))'西港島線也行 –

+0

@PadraicCunningham不'print「%r」%a'也是一樣的嗎? –

+0

@BhargavRao,是的,它是repr輸出也 –

回答

4

您正在尋找repr()

>>> a = 'd\x04' 
>>> a 
'd\x04' 
>>> print(a) 
d 
>>> repr(a) 
"'d\\x04'" 
>>> print(repr(a)) 
'd\x04' 
+0

我會接受你的答案,因爲它比我自己的更好格式化:)謝謝 –

+0

如果你接受自己的問題,你可能會得到一頂帽子:D – Seth

+0

哈哈,這很好,但帽子是幾天,而在這樣的答案逗留多年:) –

0

使它成爲一個原始字符串(如果可能)

$ python -c 'a=r"d\x04";print a' 
d\x04 
$ python -c 'a="d\x04";print "%r"%a' 
d\x04 

編輯

正如你說,你不能讓一個原始字符串,那麼你將不得不使用repr()在對方回答說..

+2

這使得它完全不同的字符串。 – Duncan

+0

不幸的是,我確實有一個不是「原始字符串」的字符串,我不能用這種方式修改它。 –

+0

@KarelBílekThis works too –

6

哦,那很快。

我只能使用repr() functon。也就是說,在我的例子,

python -c 'a="d\x04";print repr(a)' 
+2

這正是交互式解釋器所使用的:如果表達式的結果不是'None',它會打印'repr()' – Duncan