将字符转换为其python转义序列

将字符转换为其python转义序列,python,escaping,Python,Escaping,是否可以获取字符串,并将所有字符转换为Python转义序列?repr()转义所有需要转义的字符 repr(string) 标准库中还有其他方法用于转义URI等支持对str和unicode进行完全转义(现在生成最短的转义序列): 有办法转义所有字符吗?@Acorn,你可以这样做print”“。在“ABCDE”中用“\\x”+c.encode('hex')来连接c”那么包含unicode字符和标准字符混合的字符串呢?@Acornunicode\uABCD转义序列将覆盖所有字符。你想要最短的逃逸序列

是否可以获取字符串,并将所有字符转换为Python转义序列?

repr()
转义所有需要转义的字符

repr(string)

标准库中还有其他方法用于转义URI等

支持对
str
unicode
进行完全转义(现在生成最短的转义序列):


有办法转义所有字符吗?@Acorn,你可以这样做
print”“。在“ABCDE”中用“\\x”+c.encode('hex')来连接c”
那么包含unicode字符和标准字符混合的字符串呢?@Acorn
unicode\uABCD
转义序列将覆盖所有字符。你想要最短的逃逸序列吗?@Acorn我更新了它以产生最短的序列,所以chars的
ord(c)@samplebias:更好!(但您忘了更改输出)
def escape(s):
    ch = (ord(c) for c in s)
    return ''.join(('\\x%02x' % c) if c <= 255 else ('\\u%04x' % c) for c in ch)

for text in (u'\u2018\u2019hello there\u201c\u201d', 'hello there'):
    esc = escape(text)
    print esc

    # code below is to verify by round-tripping
    import ast
    assert text == ast.literal_eval('u"' + esc + '"')
\u2018\u2019\x68\x65\x6c\x6c\x6f\x20\x74\x68\x65\x72\x65\u201c\u201d
\x68\x65\x6c\x6c\x6f\x20\x74\x68\x65\x72\x65