问题
Is it possible to take a string, and convert all the characters into their Python escape sequences?
回答1:
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
回答2:
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
来源:https://stackoverflow.com/questions/5864279/converting-characters-to-their-python-escape-sequences