I have strings with control-characters in them, and I want to make them visible [for printing documentation of them, for instance].
For example, I have
dialect = csv.sniffer[].sniff[csvfile.read[1024]]
and I want to print the contents of
dialect.lineterminator
This obviously contains control-character[s]. They don't become printable by sticking a "\" in front of them. I'd like to see \n \r or both, as appropriate.
As I'm using Python 3, similar questions have proposed using str.encode, such as
dialect.lineterminator.encode['unicode-escape']
but if I print this, I get
b'\\r\\n'
which is, in spite of its appearance, just two bytes. I want a unicode string such as
"\\r\\n"
which is a 4-character string. I'm not after the unicode encoding, but the escape sequence.
Escape Characters
To insert characters that are illegal in a string, use an escape character.
An escape character is a backslash \
followed by the character you want to insert.
An example of an illegal character is a double quote inside a string that is surrounded by double quotes:
Example
You will get an error if you use double quotes inside a string that is surrounded by double quotes:
txt = "We are the so-called "Vikings" from the north."
Try it Yourself »
To fix this problem, use the escape character \"
:
Example
The escape character allows you to use double quotes when you normally would not be allowed:
txt = "We are the so-called \"Vikings\" from the north."
Try it Yourself »
Other escape characters used in Python:
\' | Single Quote | Try it » |
\\ | Backslash | Try it » |
\n | New Line | Try it » |
\r | Carriage Return | Try it » |
\t | Tab | Try it » |
\b | Backspace | Try it » |
\f | Form Feed | |
\ooo | Octal value | Try it » |
\xhh | Hex value | Try it » |
Escape sequences allow you to include special characters in strings. To do this, simply add a backslash [\
] before the character you want to escape.
For example, imagine you initialized a string with single quotes:
s = 'Hey, whats up?'
print[s]
Output:
Hey, whats up?
But if you include an apostrophe without escaping it, then you will get an error:
s = 'Hey, what's up?'
print[s]
Output:
File "main.py", line 1
s = 'Hey, what's up?'
^
SyntaxError: invalid syntax
To fix this, just escape the apostrophe:
s = 'Hey, what\'s up?'
print[s]
To add newlines to
your string, use \n
:
print["Multiline strings\ncan be created\nusing escape sequences."]
Output:
Multiline strings
can be created
using escape sequences.
An important thing to remember is that, if you want to include a backslash character in a string, you will need to escape that. For example, if you want to print a directory path in Windows, you'll need to escape each backslash in the string:
print["C:\\Users\\Pat\\Desktop"]
Output:
C:\Users\Pat\Desktop
Raw strings
A raw string can be used by prefixing the string with r
or R
, which
allows for backslashes to be included without the need to escape them. For example:
print[r"Backslashes \ don't need to be escaped in raw strings."]
Output:
Backslashes \ don't need to be escaped in raw strings.
But keep in mind that unescaped backslashes at the end of a raw string will cause and error:
print[r"There's an unescaped backslash at the end of this string\"]
Output:
File "main.py", line 1
print[r"There's an unescaped backslash at the end of this string\"]
^
SyntaxError: EOL while scanning string literal
Common escape sequences
\ | Backslash [\ ]
|
' | Single quote [' ]
|
" | Double quote [" ]
|
\n | ASCII Linefeed [adds newline] |
\b | ASCII Backspace |
A full list of escape sequences can be found here in the Python docs.
Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started