我如何将"\"
字符添加到字符串中?
例如,如果我有"testme"
并且我有
"testme"+"\"
我会得到一个错误。
"\"
在字符串中的每个括号之前添加一个“pythonic”方法是什么?
例如从"(hi)" to "\(hi\)"
我目前的方法是遍历每个字符并尝试附加一个"\"
我觉得不是“pythonic”的
我如何将"\"
字符添加到字符串中?
例如,如果我有"testme"
并且我有
"testme"+"\"
我会得到一个错误。
"\"
在字符串中的每个括号之前添加一个“pythonic”方法是什么?
例如从"(hi)" to "\(hi\)"
我目前的方法是遍历每个字符并尝试附加一个"\"
我觉得不是“pythonic”的
反斜杠用于转义各种字符,因此要在字符串中包含文字反斜杠,您需要使用"\\"
,例如:
>>> 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\'
>>> 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
>>>