如何将"\"
字符添加到字符串?
例如,如果我有"testme"
而我做
"testme"+"\"
我会收到错误。
在字符串中每个paren之前添加"\"
的“pythonic”方法是什么?
例如从"(hi)" to "\(hi\)"
我目前的方法是迭代每个字符并尝试附加一个"\"
,我觉得这不是“pythonic”
答案 0 :(得分:9)
反斜杠用于转义各种字符,因此要在字符串中包含文字反斜杠,您需要使用"\\"
,例如:
>>> print "testme" + "\\"
testme\
因此,要在字符串中的每个paren之前添加反斜杠,您可以使用以下内容:
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'\)')
请注意,即使在原始字符串文字中,您也可以使用反斜杠来转义用于字符串文字的引号,因此r'we\'re'
与'we\'re'
或"we're"
相同。这就是为什么原始字符串文字在你希望最后一个字符是反斜杠时不能正常工作的原因,例如r'testme\'
(这将是语法错误,因为字符串文字从不关闭)。
答案 1 :(得分: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
>>>