Safe string escaping?

Bengt Richter bokr at oz.net
Mon Mar 7 21:53:36 EST 2005


On Mon, 07 Mar 2005 19:24:43 -0500, "Grant Olson" <olsongt at verizon.net> wrote:

>I have a data file that has lines like "foo\n\0" where the \n\0 is acutally
>backslash+n+backslash+0.  I.E. a repr of the string from python would be
>"foo\\n\\0".  I'm trying to convert this string into one that contains
>actual newlines and whatnot.  I feel like there has to be a better and safer
>way to do this than eval("'%s'" % "foo\\n\\0") but I'm not finding it.
>
>Any tips would be appreciated,
>
 >>> s = "foo\\n\\0"
 >>> s
 'foo\\n\\0'
 >>> list(s)
 ['f', 'o', 'o', '\\', 'n', '\\', '0']
 >>> sd = s.decode('string_escape')
 >>> sd
 'foo\n\x00'
 >>> list(sd)
 ['f', 'o', 'o', '\n', '\x00']

You could make a de-escaping utility function, e.g.,

 >>> def de_esc(s): return s.decode('string_escape')
 ...
 >>> s
 'foo\\n\\0'
 >>> de_esc(s)
 'foo\n\x00'

You might want to write a test to verify that it does what you
expect for the kind of escaped string you are using.

Regards,
Bengt Richter



More information about the Python-list mailing list