将字符转换为Python转义序列

3

是否有可能将字符串中的所有字符转换为其Python转义序列?

2个回答

5

repr()函数会转义所有需要被转义的字符。

repr(string)

标准库中还有其他方法,例如转义URI等


有没有一种方法可以转义所有字符? - Acorn
@Acorn,你可以像这样做:print "".join("\\x"+c.encode('hex') for c in "ABCDE") - John La Rooy

3

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

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

字符串中含有混合Unicode字符和标准字符怎么办? - Acorn
@Acorn,unicode \uABCD 转义序列将覆盖所有字符范围。您是否想要最短的转义序列? - samplebias
@Acorn 我更新了代码,现在它可以生成最短的序列。因此,那些 ord(c) <= 255 的字符将会以 \xAB 的形式进行编码,即使是在 Unicode 字符串中也是如此。 - samplebias
@samplebias:太好了!(不过你忘记改变输出了) - Acorn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接