I am trying to write a simple expression to build a raw string that ends in a single backslash. My understanding is that a raw string should ignore attempts at escaping characters but I get this :

    >>> a = r'end\'
      File "<stdin>", line 1
        a = r'end\'
                  ^
   SyntaxError: EOL while scanning string literal

I interpret this as meaning that the \' is actually being interpreted as a literal quote - is that a bug ?

If I try to escaped the backslash I get a different problem:

    >>> a = r'end\\'
    >>> a
   'end\\\\'
    >>> print(a)
   end\\
    >>> len(a)
   5
    >>> list(a)
   ['e', 'n', 'd', '\\', '\\']

So you can see that our string (with the escaped backslash)  is now 5 characters with two literal backslash characters

The only solution I have found is to do this :

    >>> a = r'end' + chr(92)
    >>> a
   'end\\'
    >>> list(a)
   ['e', 'n', 'd', '\\']

or


    >>> a = r'end\\'[:-1]
    >>> list(a)
   ['e', 'n', 'd', '\\']

Neither of which are nice.



--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to