4

我想从中转义一个字符串:

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 回答 1

7

您将字符串表示与字符串混淆了。双反斜杠用于使字符串可往返;您可以再次将该值粘贴回 Python 中。

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

看一眼:

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

Python 对字符串文字表示中的反斜杠进行转义,以防止将其解释为转义码。

于 2013-11-07T10:09:47.200 回答