我想从中删除一个字符串:
str1 = "this is a string (with parentheses)"
到此:
str2 = "this is a string \(with parentheses\)"
也就是说,括号中有一个\
个转义字符。这将被提供给另一个需要转义这些字符的客户端,并且只能使用一个转义斜杠。
为简单起见,我只关注下面的左括号,即从'('
更改为'\('
到目前为止我试过了:
替换
str1.replace("(", "\(")
'this is a string \\(with parentheses)'
子
re.sub( "\(", "\(", str1)
'this is a string \\(with parentheses)'
使用原始字符串转义字典
escape_dict = { '(':r'\('}
"".join([escape_dict.get(char,char) for char in str1])
'this is a string \\(with parentheses)'
无论如何,我总是得到双重反弹。有没有办法只获得一个?
答案 0 :(得分:6)
您将字符串表示与字符串 value 混淆。双反斜杠是为了使字符串圆形可以;你可以再次将值粘贴回Python。
实际字符串本身只有一个反斜杠。
看看:
>>> '\\'
'\\'
>>> len('\\')
1
>>> print '\\'
\
>>> '\('
'\\('
>>> len('\(')
2
>>> print '\('
\(
Python转义字符串文字表示中的反斜杠,以防止它被解释为转义码。