在python中转义字符只需一次(单个反冲)

时间:2013-11-07 10:06:15

标签: python escaping

我想从中删除一个字符串:

str1 = "this is a string (with parentheses)"

到此:

str2 = "this is a string \(with parentheses\)"

也就是说,括号中有一个\个转义字符。这将被提供给另一个需要转义这些字符的客户端,并且只能使用一个转义斜杠。

为简单起见,我只关注下面的左括号,即从'('更改为'\(' 到目前为止我试过了:

  1. 替换

    str1.replace("(", "\(")
    'this is a string \\(with parentheses)'
    
  2. re.sub( "\(", "\(", str1)
    'this is a string \\(with parentheses)'
    
  3. 使用原始字符串转义字典

    escape_dict = { '(':r'\('}
    "".join([escape_dict.get(char,char) for char in str1])
    'this is a string \\(with parentheses)'
    
  4. 无论如何,我总是得到双重反弹。有没有办法只获得一个?

1 个答案:

答案 0 :(得分:6)

您将字符串表示与字符串 value 混淆。双反斜杠是为了使字符串圆形可以;你可以再次将值粘贴回Python。

实际字符串本身只有一个反斜杠。

看看:

>>> '\\'
'\\'
>>> len('\\')
1
>>> print '\\'
\
>>> '\('
'\\('
>>> len('\(')
2
>>> print '\('
\(

Python转义字符串文字表示中的反斜杠,以防止它被解释为转义码。