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).
4 Answers 4
You need to escape your backslash by preceding it with, yes, another backslash:
And for versions prior to Python 3:
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.
Python Backslash
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:
The \n is a single character, not two. For example:
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:
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:
To fix this, you need to join the strings in the colors list before placing them in the curly braces:
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:
Строки — Основы Python
В этом уроке мы разберемся, что такое строка и какую роль в коде играют кавычки. Мы познакомимся со специальными символами и научимся их применять.
Определить строку довольно просто — это некий набор символов. Представим, что у нас есть такие записи:
Какие из этих вариантов — строки? На самом деле, все пять вариантов подходят:
- С 'Hello' и 'Goodbye' все очевидно — мы уже работали с подобными конструкциями и называли их строками
- 'G' и ' ' — тоже строки, просто в них всего по одному символу
- '' — это пустая строка, потому что в ней ноль символов
Кавычки
Строкой мы считаем все, что находится внутри кавычек: даже если это пробел, один символ или вообще отсутствие символов.
Выше мы записывали строки в одинарных кавычках, но это не единственный способ. Можно использовать и двойные:
Теперь представьте, что вы хотите напечатать строчку Dragon's mother. Апостроф перед буквой s — это такой же символ, как одинарная кавычка. Попробуем:
Такая программа не будет работать. С точки зрения Python, строчка началась с одинарной кавычки, а потом закончилась после слова Dragon. Дальше были символы s mother без кавычек — значит, это не строка. А потом была одна открывающая строку кавычка, которая так и не закрылась: ') . Этот код содержит синтаксическую ошибку — это видно даже по тому, как подсвечен код.
Чтобы избежать этой ошибки, мы используем двойные кавычки. Такой вариант программы сработает верно:
Теперь интерпретатор знает, что строка началась с двойной кавычки и закончиться должна тоже на двойной кавычке. А одинарная кавычка внутри стала частью строки.
Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку нужно заключать в одинарные. Причем количество кавычек внутри самой строки неважно.
Теперь представим, что мы хотим создать такую строку:
В ней есть и одинарные, и двойные кавычки. Нам нужно каким-то образом указать интерпретатору, что кавычки — это символы внутри строки, а не начало или конец строки.
Для этого используют символ экранирования: \ — обратный слэш. Если мы поставим \ перед кавычкой (одинарной или двойной), то интерпретатор распознает кавычку как обычный символ внутри строки, а не начало или конец строки:
Обратите внимание, что в примере выше нам не пришлось экранировать одинарную кавычку (апостроф 's), потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.
Если нужно вывести сам обратный слеш, то работает такое же правило. Как и любой другой специальный символ, его надо экранировать:
Экранированные последовательности
Мы хотим показать вот такой диалог:
Попробуем вывести на экран строку с таким текстом:
Как видите, результат получился не такой, как мы хотели. Строки расположились друг за другом, а не одна ниже другой. Нам нужно как-то сказать интерпретатору «нажать на Enter» — сделать перевод строки после вопросительного знака. Это можно сделать с помощью символа \n :
\n — это пример экранированной последовательности (escape sequence). Такие последовательности еще называют управляющими конструкциями. Их нельзя увидеть в том же виде, в котором их набрали.
Набирая текст в Word, вы нажимаете на Enter в конце строчки. Редактор при этом ставит в конец строчки специальный невидимый символ, который называется LINE FEED (LF, перевод строчки). В некоторых редакторах можно даже включить отображение невидимых символов. Тогда текст будет выглядеть примерно так:
Устройство, которое выводит соответствующий текст, учитывает этот символ. Например, принтер при встрече с LF протаскивает бумагу вверх на одну строку, а текстовый редактор переносит весь последующий текст ниже, также на одну строку.
Существует несколько десятков таких невидимых символов, но в программировании часто встречаются всего несколько. Кроме перевода строки, к таким символам относятся:
- табуляция \t — разрыв, который получается при нажатии на кнопку Tab
- возврат каретки \r — работает только в Windows
Распознать такую управляющую конструкцию в тексте можно по символу \ . Программисты часто используют перевод строки \n , чтобы правильно форматировать текст. Например, напишем такой код:
Тогда на экран выведется:
Когда работаете с символом перевода, учитывайте следующие моменты:
Не важно, что стоит перед или после \n : символ или пустая строка. Перевод обнаружится и выполнится в любом случае
Строка может содержать только \n :
Программа выведет на экран:
В коде последовательность \n выглядит как два символа, но с точки зрения интерпретатора — это один специальный символ
Если нужно вывести \n как текст (два отдельных печатных символа), то можно воспользоваться экранированием — добавить еще один \ в начале. Последовательность \\n отобразится как символы \ и n , которые идут друг за другом:
В Windows для перевода строк по умолчанию используется \r\n . Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы. Например, когда в команде разработчиков есть пользователи Linux.
Дело в том, что последовательность \r\n имеет разную трактовку в зависимости от выбранной кодировки, о чем мы поговорим позже. По этой причине в среде разработчиков принято всегда использовать \n без \r .
В таком случае перевод строки всегда трактуется одинаково и отлично работает в любой системе. Не забудьте настроить ваш редактор на использование \n .
Конкатенация
В веб-разработке программы постоянно оперируют строками. Все, что мы видим на сайтах, так или иначе представлено в виде текста. Этот текст чаще всего динамический — то есть он получается из разных частей, которые соединяются вместе.
Чтобы соединить строки, нужно выполнить конкатенацию:
Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый — правой. Вот еще несколько примеров:
Как видите, строки можно склеивать, даже если их записали с разными кавычками.
Пробел — такой же символ, как и другие, поэтому сколько пробелов поставите в строке, столько и получится в итоговой строке:
Как распечатать одну обратную косую черту?
Когда я пишу print(‘\’) или print(«\») или print(«‘\'») , Python не печатает символ обратной косой черты \ . Вместо этого он ошибается для первых двух и печатает » для второго. Что я должен сделать, чтобы распечатать обратную косую черту?
7 ответов
Вам нужно избежать обратной косой черты, поставив перед ней еще одну обратную косую черту:
И для версий до Python 3:
Символ \ называется escape-символом, который по-разному интерпретирует следующий за ним символ. Например, n сам по себе является просто буквой, но когда вы ставите перед ним обратную косую черту, он становится \ n , который является символом newline .
Как вы, вероятно, можете догадаться, \ также необходимо экранировать, чтобы он не функционировал как экранирующий символ. Вы должны . избежать побега, по сути.
В Python обратная косая черта ( \ ) является escape-символом. Поэтому, если вы хотите напечатать одну обратную косую черту, используйте:
Кроме того, обратную косую черту можно использовать для экранирования тех же кавычек, которые вы используете для разделения строки. Как это:
Без \ Python подумал бы, что строка заканчивается на ‘ в What’s . \ позволяет вам экранировать метку ‘ и печатать ее вместо закрытия строки.