I don't understand how raw string literals work. I know that when using r
it ignores all specials, like when doing \n
it treats it as \n and not as a new line. but then I tried to do this:
x = r'\'
and it said SyntaxError: EOL while scanning string literal
and not '\'
why? did I understanded it correctly? and also what is the explanation for this :
print r'\\' # gives '\\'
print r'\\\' # gives SyntaxError
In a raw literal the backslash will escape the quote character that is defining the string.
From the docs
The only way to put in a single quote into a string started with a single quote is to escape it. Thus, both raw and regular string literals will allow escaping of quote characters when you have an unescaped backslash followed by a quote character. Because of the requirement that there must be a way to express single (or double) quotes inside string literals that begin with single (or double) quotes, the string literal
'\'
is not legal, whether you use a raw or regular string literal.To get any arbitrary string with an odd number of literal backslashes, I believe the best way is to use regular string literals. This is because trying to use
r'\\'
will work, but it will give you a string with two backslashes instead of one:This answer is only meant to complement the other one.