Backslash Escapes

Devin Jeanpierre jeanpierreda at gmail.com
Sun Dec 25 20:26:39 EST 2011


> Whenever I take any input (raw_input, of course!) or I read from a
> file, etc., any backslashes get escaped automatically.

They don't get escaped, they get... treated as the bytes that they
are. If you want them to mean what they do in Python, use the
'string_escape' codec.

    >>> x = r'nyan\nyan'
    >>> print x
    nyan\nyan
    >>> print x.decode('string_escape')
    nyan
    yan

-- Devin

On Sun, Dec 25, 2011 at 8:04 PM, Felipe O <pip.261 at gmail.com> wrote:
> Hi all,
> Whenever I take any input (raw_input, of course!) or I read from a
> file, etc., any backslashes get escaped automatically. Is there any
> elegant way of parsing the backslashes as though they were written in
> a python string. The best I have so far right now goes like this:
>
> def parse_backslash_escapes(input_string):

>    parts = input_string.split("'''")  # That's ' " " " ' without the spaces
>    '"""'.join(eval + p + '"""') for p in parts)
>
> I'm not entirely convinced that it's safe on two accounts.
> + Is that eval statement safe? The input could be coming from an
> unfriendly source.
> + Are there any obscure backslash escapes or other tricks I should be aware of?
>
> I guess the alternative is to make a dictionary of all the escapes I
> want to support, but that sounds tedious and error-prone.
>
> Thanks,
>
> Felipe
> --
> http://mail.python.org/mailman/listinfo/python-list



More information about the Python-list mailing list