Use a raw string:
>>> foo = r'baz "\"'
>>> foo
'baz "\\"'
Note that although it looks wrong, it's actually right. There is only one backslash in the string foo
.
This happens because when you just type foo
at the prompt, python displays the result of __repr__[]
on the string. This leads to the following [notice only one backslash and no quotes around the print
ed string]:
>>> foo = r'baz "\"'
>>> foo
'baz "\\"'
>>> print[foo]
baz "\"
And let's keep going because there's more backslash tricks. If you want to have a backslash at the end of the string and use the method above you'll come across a problem:
>>> foo = r'baz \'
File "", line 1
foo = r'baz \'
^
SyntaxError: EOL while scanning single-quoted string
Raw strings don't work properly when you do that. You have to use a regular string and escape your backslashes:
>>> foo = 'baz \\'
>>> print[foo]
baz \
However, if you're working with Windows file names, you're in for some pain. What you want to do is use forward slashes and the os.path.normpath[]
function:
myfile = os.path.normpath['c:/folder/subfolder/file.txt']
open[myfile]
This will save a lot of escaping and hair-tearing. This page was handy when going through this a while ago.
Summary: in this tutorial, you’ll learn about the Python backslash character as a part of a special sequence character or to escape characters in a string.
Introduction to the Python backslash
In Python, the backslash[\
] is a special character. If you use the backslash in front of another character, it changes the meaning of that character.
For example, the t
is a literal character. But if you use the
backslash character in front of the letter t
, it’ll become the tab character [\t
].
Generally, the backslash has two main purposes.
First, the backslash character is a part of special character sequences such as the tab character \t
or the new line character \n
.
The following example prints a string that has a newline character:
Code language: PHP [php]
print['Hello,\n World']
Output:
Hello, World
The \n is a single character, not two. For example:
Code language: PHP [php]
s = '\n' print[len[s]] # 1
Second, the backslash
[\
] escape other special characters. For example, if you have a string that has a single quote inside a single-quoted string like the following string, you need to use the backslash to escape the single quote character:
Code language: PHP [php]
s = '"Python\'s awesome" She said' print[s]
Output:
Code language: JavaScript [javascript]
"Python's awesome" She said
Backslash in f-strings
PEP-498 specifies that an f-string cannot contain a backslash character as a part of the expression inside
the curly braces {}
.
The following example will result in an error:
Code language: PHP [php]
colors = ['red','green','blue'] s = f'The RGB colors are:\n {'\n'.join[colors]}' print[s]
Error:
Code language: JavaScript [javascript]
SyntaxError: f-string expression part cannot include a backslash
To fix this, you need to join the strings in the colors
list before placing them in the curly braces:
colors = ['red','green','blue'] rgb = '\n'.join[colors] s = f"The RGB colors are:\n{rgb}" print[s]
Code language: PHP [php]
Output:
The RGB colors are: red green blue
Backslash in raw strings
Raw strings treat the backslash character [\
] as a literal character. The following example treats the backslash
character \
as a literal character, not a special character:
Code language: PHP [php]
s = r'\n' print[s]
Output:
\n
Summary
- The python backslash character [
\
] is a special character used as a part of a special sequence such as\t
and\n
. - Use the Python backslash [
\
] to escape other special characters in a string. - F-strings cannot contain the backslash a part of expression inside the curly braces
{}
. - Raw strings treat the backslash [\] as a literal character.
Did you find this tutorial helpful ?