Python auto add escape characters to string

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:

CodeResultTry it
\' 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

Escape SequenceMeaning
\ 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

How do you add an escape character to a string in Python?

Escape sequences allow you to include special characters in strings. To do this, simply add a backslash ( \ ) before the character you want to escape.

How do you avoid escape characters in a string Python?

For turning a normal string into a raw string, prefix the string (before the quote) with an r or R. This is the method of choice for overcoming this escape sequence problem.

How do you escape a string literal in Python?

Even in a raw literal, quotes can be escaped with a backslash, but the backslash remains in the result; 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).

How do you escape special characters in regex Python?

escape() was changed to escape only characters which are meaningful to regex operations. Note that re. escape will turn e.g. a newline into a backslash followed by a newline; one might well instead want a backslash followed by a lowercase n.