representing a literal single slash

Terry Reedy tjreedy at
Sun Sep 15 18:59:36 EDT 2002

"Padraig Brady" <padraig at> wrote in message
news:3D84FEE6.90600 at
> > mystr = mystr.replace(r'\\', r'\')
> Emm this actually doesn't work. Why can't you:
> s=r'\'
> Is it a bug?

Ref Manual 4.1:
When an `r' or `R' prefix is present, a character following a
backslash is included in the string without change, and all
backslashes are left in the string. For example, the string literal
r"\n" consists of two characters: a backslash and a lowercase `n'.
String quotes can be escaped with a backslash, but the backslash
remains in the string; for example, r"\"" is a valid string literal
consisting of two characters: a backslash and a double quote; r"\" is
not a valid string literal (even a raw string cannot end in an odd
number of backslashes). Specifically, a raw string cannot end in a
single backslash (since the backslash would escape the following quote
character). Note also that a single backslash followed by a newline is
interpreted as those two characters as part of the string, not as a
line continuation.

Terry J. Reedy

More information about the Python-list mailing list