From: Chris Rebert on
On Wed, May 19, 2010 at 8:34 PM, <python(a)bdurham.com> wrote:
> How can I unescape a raw string so that it behaves as a non-raw string?

That's not what the notion of raw strings in Python technically means,
but anyway...

> For example, if I read the string "\n\t A B C\" D E F \xa0 \u1234"

I'll assume you're quoting the file contents itself verbatim here,
rather than a Python string literal (which would require doubling up
on the backslashes).

> from a
> text file, how can I convert (unescape?) this string so that \n, \t, \", \x,
> and \u get converted to a newline, tab, double quote, hex encoded and
> unicode encoded chars?
>
> I know I can do this explictly via a series of .replace() methods, but
> certainly there must be a built-in way to do this on a generic basis?

new_string = your_string.decode('string_escape')

Cheers,
Chris
--
http://blog.rebertia.com
From: python on
Hi Chris,

> That's not what the notion of raw strings in Python technically means, but anyway...

Agree - I was having a difficult time trying to describe my dilemma -
thanks for hanging in there with my rather awkward intro :)

> I'll assume you're quoting the file contents itself verbatim here, rather than a Python string literal (which would require doubling up
on the backslashes).

Yes.

> new_string = your_string.decode('string_escape')

That's just the clue I needed. The actual decoder I needed turned out to
be 'unicode_escape' because of my embedded \uxxxx markup.

new_string = your_string.decode('unicode_escape')

Thank you for your help Chris!

Regards,
Malcolm