git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Simple question - end a raw string with a single backslash ?


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.