John Machin <[EMAIL PROTECTED]> wrote: > Hmmm ... the encode is documented as "Produce a string that is > suitable as Unicode literal in Python source code", but it *isn't* > suitable. A Unicode literal is u'blah', this gives just blah. Worse, > it leaves the caller to nut out how to escape apostrophes and quotes: > >>>> test = u'Python\'\'\'\'\"\"\"\"\u1234\n' >>>> print repr(test) > u'Python\'\'\'\'""""\u1234\n' >>>> print test.encode('unicode-escape') > Python''''""""\u1234\n >>>> > > Why would someone bother writing this codec when repr() does the job > properly? > I don't know why it was written, but if it helps I can tell you why I have had occasion to use it: precisely because it does leave the caller to 'nut out how to escape apostrophes and quotes'.
repr() does a good enough job if you just want a Python source string, but you can't control whether repr will escape quotes or apostrophes - if the string contains an apostrophe and no double-quote then the repr will enclose it in double-quotes, otherwise it always uses single quotes. >>> u'"', u'"\'', u'\'"', u'\'' (u'"', u'"\'', u'\'"', u"'") If you want to force a particular quoting convention then unicode-escape gets you half way there and you can get the rest of the way with a couple of replace calls. -- http://mail.python.org/mailman/listinfo/python-list