Michael
Michael

Reputation: 16142

How can I print a single backslash?

When I write print('\') or print("\") or print("'\'"), Python doesn't print the backslash \ symbol. Instead it errors for the first two and prints '' for the third. What should I do to print a backslash?


This question is about producing a string that has a single backslash in it. This is particularly tricky because it cannot be done with raw strings. For the related question about why such a string is represented with two backslashes, see Why do backslashes appear twice?. For including literal backslashes in other strings, see using backslash in python (not to escape).

Upvotes: 121

Views: 343737

Answers (4)

Bucket
Bucket

Reputation: 7521

You need to escape your backslash by preceding it with, yes, another backslash:

print("\\")

The \ character is called an escape character, which interprets the character following it differently. For example, n by itself is simply a letter, but when you precede it with a backslash, it becomes \n, which is the newline character.

As you can probably guess, \ also needs to be escaped so it doesn't function like an escape character. You have to... escape the escape, essentially.

See the documentation for string literals.

Upvotes: 131

Karl Knechtel
Karl Knechtel

Reputation: 61643

For completeness: A backslash can also be escaped as a hex sequence: "\x5c"; or a short Unicode sequence: "\u005c"; or a long Unicode sequence: "\U0000005c". All of these will produce a string with a single backslash, which Python will happily report back to you in its canonical representation - '\\'.

Upvotes: 1

Tae Soo Kim
Tae Soo Kim

Reputation: 1119

print(fr"\{''}")

or how about this

print(r"\ "[0])

Upvotes: 1

Jean-François Fabre
Jean-François Fabre

Reputation: 140287

A hacky way of printing a backslash that doesn't involve escaping is to pass its character code to chr:

>>> print(chr(92))
\

Upvotes: 17

Related Questions