2014-12-25 33 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