在Python中逃避str

时间:2010-12-08 20:50:14

标签: python

哇,这应该是这么简单,但它只是不起作用。 我需要在字符串中插入一个“\”(对于Bash命令),但是转义只是不起作用。

>>> a = 'testing'
>>> b = a[:3] + '\' + a[3:]
    >>> File "<stdin>", line 1
    >>> b = a[:3] + '\' + a[3:]
                              ^
   >>>SyntaxError: EOL while scanning string literal
>>> b = a[:3] + '\\' + a[3:]
>>> b
'tes\\ting'
>>> sys.version
'2.7 (r27:82500, Sep 16 2010, 18:02:00) \n[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)]' 

第一个错误是可以理解和被驱逐的。最后的报价正在被吃掉,而翻译也是barfs。 但是,第二个例子应该有效。为什么有两个斜杠?

Python 2.7

谢谢,

编辑:谢谢格雷格。在翻译工作而不使用repr(b)是一个问题。 Python工作正常,但我没有查看输出的正确版本。

6 个答案:

答案 0 :(得分:7)

你被Python的输出误导了。尝试:

>>> a = "test\\ing"
>>> print(a)
test\ing
>>> print(repr(a))
'test\\ing'
>>> a
'test\\ing'

答案 1 :(得分:1)

如果你想要双斜线,因为shell将再次转义\,请使用原始字符串:

b = a[:3] + r'\\' + a[3:]

答案 2 :(得分:1)

'tes\\ting'是正确的,但您正在查看字符串的repr输出,该输出将始终显示转义字符。

>>> print 'tes\\ting'
tes\ting

答案 3 :(得分:1)

第二个例子是正确的。有两个斜杠,因为您正在打印字符串的 Python表示

如果您想查看实际字符串,请拨打print a

答案 4 :(得分:0)

b在第二个例子中很好,你看到两个斜杠,因为你正在打印b的表示,所以斜杠也会被转义。

>>> b
'tes\\ting'
>>> print b
tes\ting
>>> 

答案 5 :(得分:0)

Python在显示字符串的表示时再次引用反斜杠(以这种方式可以粘贴它并使用转义的反斜杠获取字符串)。

如果你打印字符串,你会发现实际字符串中只有一个。

>>> print "hello\\world"
hello\world