我试图用双反斜杠替换我在一个字符串中得到的单个反斜杠,因为有时“反斜杠+字符”组合会创建一个转义序列。我尝试了各种方法(主要来自其他stackoverflow问题),但到目前为止,没有任何方法能让我获得正确的结果。
示例s = "\aa, \bb, \cc, \dd"
string.replace(s,"\\","\\\\")
用特殊字符替换第一个a和b(这里不能粘贴确切的结果吗?):
@a,@b,\\cc,\\dd
print s.encode("string_escape")
产生
\x07a,\x08b,\\cc,\\dd
(“unicode-escape”相同)
使用此function
escape_dict={'\a':r'\a',
'\b':r'\b',
'\c':r'\c',
'\f':r'\f',
'\n':r'\n',
'\r':r'\r',
'\t':r'\t',
'\v':r'\v',
'\'':r'\'',
'\"':r'\"',
'\0':r'\0',
'\1':r'\1',
'\2':r'\2',
'\3':r'\3',
'\4':r'\4',
'\5':r'\5',
'\6':r'\6',
'\7':r'\7',
'\8':r'\8',
'\9':r'\9'}
def raw(text):
"""Returns a raw string representation of text"""
new_string=''
for char in text:
try: new_string+=escape_dict[char]
except KeyError: new_string+=char
return new_string
产生
\7a,\bb,\cc,\dd
并使用此function
import re
import codecs
ESCAPE_SEQUENCE_RE = re.compile(r'''
( \\U........ # 8-digit hex escapes
| \\u.... # 4-digit hex escapes
| \\x.. # 2-digit hex escapes
| \\[0-7]{1,3} # Octal escapes
| \\N\{[^}]+\} # Unicode characters by name
| \\[\\'"abfnrtv] # Single-character escapes
)''', re.UNICODE | re.VERBOSE)
def decode_escapes(s):
def decode_match(match):
return codecs.decode(match.group(0), 'unicode-escape')
return ESCAPE_SEQUENCE_RE.sub(decode_match, s)
再次返回带有特殊字符的字符串
@a,@b,\\cc,\\dd
我需要转换的实际字符串类似于"GroupA\Group2\Layer1"
答案 0 :(得分:2)
总的来说,我同意克劳斯的评论。虽然这并不总是可能的。
快速回答是你可以这样做:r'\ aa,\ bb,\ cc,\ dd'。
我找到了更多信息here。
如果不可能的话,不太满意的答案就是你这样替换:
s = '\aa, \bb, \cc, \dd'
string.replace(s,"\x07","\\a")