Is it possible to take a string, and convert all the characters into their Python escape sequences?
2 Answers
repr() escapes all the characters that need to be escaped
repr(string) There are other methods in the standard library for the likes of escaping URIs and so on
2 Comments
Acorn
Is there a way to escape all characters?
John La Rooy
@Acorn, you could do something like this
print "".join("\\x"+c.encode('hex') for c in "ABCDE")Supports full escaping of both str and unicode (now produces the shortest escape sequence):
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 + '"') Output:
\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 4 Comments
Acorn
What about strings containing a mix of unicode characters and standard characters?
samplebias
@Acorn the
unicode \uABCD escape sequence will cover the full range of characters. Did you want the shortest possible escape sequence?samplebias
@Acorn I updated it to produce the shortest sequence it can, so chars whose
ord(c) <= 255 will be encoded as \xAB form, even in unicode string.Acorn
@samplebias: Even better! (you forgot to change the output though)