Python:替换反斜杠以避免字符串中的转义序列

Python: Replacing backslashes to avoid escape sequences in string

我正在尝试用双反斜杠替换字符串中的单反斜杠,因为有时 "backslash+character" 组合会创建一个转义序列。我尝试了各种方法(主要来自其他 Whosebug 问题),但到目前为止没有得到正确的结果。

示例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'\"',
           '[=15=]':r'[=15=]',
           '':r'',
           '':r'',
           '':r'',
           '':r'',
           '':r'',
           '':r'',
           '':r'',
           '':r'',
           '':r''}

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

产生

a,\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)

returns又是带特殊字符的字符串

 @a,@b,\cc,\dd

我需要转换的实际字符串类似于 "GroupA\Group2\Layer1"

总的来说,我同意克劳斯的评论。虽然这并不总是可能的。

快速回答是您可以这样做:r'\aa, \bb, \cc, \dd'。

我找到了更多信息here

如果不可能的话,不太高兴的答案是你这样做你的替换:

s = '\aa, \bb, \cc, \dd'
string.replace(s,"\x07","\a")