我试图用双反斜杠替换字符串中的单反斜杠,因为有时“反斜杠+字符”组合会创建转义序列。我尝试了各种方法(主要来自其他 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"
最佳答案
总的来说,我同意克劳斯的评论。尽管这并不总是可能的。
简单的回答是,您可以这样做:r'\aa、\bb、\cc、\dd'。
我找到了更多信息here .
如果这不可能,则不太令人高兴的答案是您进行替换:
s = '\aa, \bb, \cc, \dd'
string.replace(s,"\x07","\\a")
关于Python:替换反斜杠以避免字符串中的转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35503377/