According to the docs, the builtin string encoding
Produce[s] a string that is suitable as string literal in Python source code
Produce[s] a string that is suitable as Unicode literal in Python source code
So, they should have roughly the same behaviour. BUT, they appear to treat single quotes differently:
>>> print """before '" \0 after""".encode('string-escape') before \'" \x00 after >>> print """before '" \0 after""".encode('unicode-escape') before '" \x00 after
string_escape escapes the single quote while the Unicode one does not. Is it safe to assume that I can simply:
>>> escaped = my_string.encode('unicode-escape').replace("'", "\\'")
...and get the expected behaviour?
Edit: Just to be super clear, the expected behavior is getting something suitable as a literal.