0

我如何将"\"字符添加到字符串中?

例如,如果我有"testme"并且我有

"testme"+"\"

我会得到一个错误。

"\"在字符串中的每个括号之前添加一个“pythonic”方法是什么?

例如从"(hi)" to "\(hi\)"

我目前的方法是遍历每个字符并尝试附加一个"\"我觉得不是“pythonic”的

4

2 回答 2

9

反斜杠用于转义各种字符,因此要在字符串中包含文字反斜杠,您需要使用"\\",例如:

>>> print "testme" + "\\"
testme\

因此,要在字符串中的每个括号之前添加反斜杠,您可以使用以下命令:

s = s.replace('(', '\\(').replace(')', '\\)')

或者使用正则表达式:

import re
s = re.sub(r'([()])', r'\\\1', s)

请注意,您还可以通过r在开始引号前添加一个字母来使用原始字符串文字,这样可以按字面解释反斜杠并且不进行转义。所以r'foo\bar'将与'foo\\bar'. 所以你可以重写第一种方法,如下所示:

s = s.replace('(', r'\(').replace(')', r'\)')

请注意,即使在原始字符串文字中,您也可以使用反斜杠来转义用于字符串文字的引号,因此与orr'we\'re'相同。这就是为什么当您希望最后一个字符是反斜杠时,原始字符串文字不能很好地工作,例如(这将是一个语法错误,因为字符串文字永远不会关闭)。'we\'re'"we're"r'testme\'

于 2013-06-19T16:50:09.327 回答
0
>>> import re  
>>> strs = "(hi)"
>>> re.sub(r'([()])',r'\\\g<0>',strs)
'\\(hi\\)'

"\"无效,因为您在这里转义了结束引号,因此 python 将引发 EOF 错误。

\所以你必须使用另一个来逃避第一个\

>>> "\\"
'\\'
>>> "\"
  File "<ipython-input-23-bdc6fd40f381>", line 1
    "\"
      ^
SyntaxError: EOL while scanning string literal

>>> 
于 2013-06-19T16:48:32.727 回答