Derek Wilson added the comment:

> ast.literal_eval("'%s'" % e)

this doesn't work if you use the wrong quote. without introspecting the data in 
e you can't reliably choose whether to use "'%s'" '"%s"' '"""%s"""' or 
"'''%s'''". which ones break (and break siliently) depend on the data.


> e.encode().decode('unicode-escape').encode('latin1').decode()

so ... encode the repr()[1:-1] string in utf-8 bytes, decode backslash escape 
sequences and individual bytes as if they are latin1, encode as latin1 (which 
is just byte for byte serialization), then decode the byte representation as if 
it is utf-8 encoded to recombine the characters that were broken with the 
'unicode-escape' decode earlier? 

this may work for my example, but this looks and feels very hacky for something 
that should be simple and straight forward. and again tools other than python 
will run into escaped quotes in the data which may cause problems.

> e.encode('latin1', 'backslashescape').decode('unicode-escape')

when i execute this i get a traceback

LookupError: unknown error handler name 'backslashescape'

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue18679>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to