Вывод обратного слэша в Python: экранирование, raw-строки и спецсимволы

0
27

Памятка: как правильно выводить обратный слэш в Python

  1. Для вывода одного обратного слэша используйте \\ в обычной строке.
  2. Используйте raw-строки (r’…’) для отключения экранирования.
  3. Помните, что raw-строка не может заканчиваться одиночным обратным слэшем.
  4. В f-строках экранируйте слэш двойным \\ или используйте fr’…’.
  5. Для путей Windows предпочитайте raw-строки или заменяйте слэши на прямые (/).
  6. Избегайте одиночного обратного слэша в конце строки — это вызовет синтаксическую ошибку.
  7. Для вывода специальных символов (\n, \t) используйте экранирование.
  8. Проверяйте вывод через print(), чтобы убедиться в правильности.
  9. При работе с регулярными выражениями используйте raw-строки для упрощения.
  10. Запоминайте: \\ в коде = один слэш на экране.

Строки — Основы Python

Coding - изображение номер один
Coding — изображение номер один

В этом уроке мы разберемся, что такое строка и какую роль в коде играют кавычки. Мы познакомимся со специальными символами и научимся их применять.

Определить строку довольно просто — это некий набор символов. Представим, что у нас есть такие записи:

Какие из этих вариантов — строки? На самом деле, все пять вариантов подходят:

  • С ‘Hello’ и ‘Goodbye’ все очевидно — мы уже работали с подобными конструкциями и называли их строками
  • ‘G’ и ‘ ‘ — тоже строки, просто в них всего по одному символу
  • » — это пустая строка, потому что в ней ноль символов

Кавычки

#Escape - изображение номер два
#Escape — изображение номер два

Строкой мы считаем все, что находится внутри кавычек: даже если это пробел, один символ или вообще отсутствие символов.

Выше мы записывали строки в одинарных кавычках, но это не единственный способ. Можно использовать и двойные:

Чтобы избежать этой ошибки, мы используем двойные кавычки. Такой вариант программы сработает верно:

Теперь интерпретатор знает, что строка началась с двойной кавычки и закончиться должна тоже на двойной кавычке. А одинарная кавычка внутри стала частью строки.

Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку нужно заключать в одинарные. Причем количество кавычек внутри самой строки неважно.

В ней есть и одинарные, и двойные кавычки. Нам нужно каким-то образом указать интерпретатору, что кавычки — это символы внутри строки, а не начало или конец строки.

Для этого используют символ экранирования: \ — обратный слэш. Если мы поставим \ перед кавычкой (одинарной или двойной), то интерпретатор распознает кавычку как обычный символ внутри строки, а не начало или конец строки:

Обратите внимание, что в примере выше нам не пришлось экранировать одинарную кавычку (апостроф ‘s), потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.

Если нужно вывести сам обратный слеш, то работает такое же правило. Как и любой другой специальный символ, его надо экранировать:

Экранированные последовательности

Python - изображение номер три
Python — изображение номер три

Как видите, результат получился не такой, как мы хотели. Строки расположились друг за другом, а не одна ниже другой. Нам нужно как-то сказать интерпретатору «нажать на Enter» — сделать перевод строки после вопросительного знака. Это можно сделать с помощью символа \n:

\n — это пример экранированной последовательности (escape sequence). Такие последовательности еще называют управляющими конструкциями. Их нельзя увидеть в том же виде, в котором их набрали.

Набирая текст в Word, вы нажимаете на Enter в конце строчки. Редактор при этом ставит в конец строчки специальный невидимый символ, который называется LINE FEED (LF, перевод строчки). В некоторых редакторах можно даже включить отображение невидимых символов. Тогда текст будет выглядеть примерно так:

ЧИТАТЬ ТАКЖЕ:  Списки в Python: хранение в памяти, управление и освобождение

Устройство, которое выводит соответствующий текст, учитывает этот символ. Например, принтер при встрече с LF протаскивает бумагу вверх на одну строку, а текстовый редактор переносит весь последующий текст ниже, также на одну строку.

Существует несколько десятков таких невидимых символов, но в программировании часто встречаются всего несколько. Кроме перевода строки, к таким символам относятся:

  • табуляция \t — разрыв, который получается при нажатии на кнопку Tab
  • возврат каретки \r — работает только в Windows

Распознать такую управляющую конструкцию в тексте можно по символу \. Программисты часто используют перевод строки \n, чтобы правильно форматировать текст. Например, напишем такой код:

В коде последовательность \n выглядит как два символа, но с точки зрения интерпретатора — это один специальный символ

Если нужно вывести \n как текст (два отдельных печатных символа), то можно воспользоваться экранированием — добавить еще один \ в начале. Последовательность \\n отобразится как символы \ и n, которые идут друг за другом:

В Windows для перевода строк по умолчанию используется \r\n. Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы. Например, когда в команде разработчиков есть пользователи Linux.

Дело в том, что последовательность \r\n имеет разную трактовку в зависимости от выбранной кодировки, о чем мы поговорим позже. По этой причине в среде разработчиков принято всегда использовать \n без \r.

В таком случае перевод строки всегда трактуется одинаково и отлично работает в любой системе. Не забудьте настроить ваш редактор на использование \n.

Конкатенация

Ввод и вывод данных в - изображение номер четыре
Ввод и вывод данных в — изображение номер четыре

В веб-разработке программы постоянно оперируют строками. Все, что мы видим на сайтах, так или иначе представлено в виде текста. Этот текст чаще всего динамический — то есть он получается из разных частей, которые соединяются вместе.

Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый — правой. Вот еще несколько примеров:

Как видите, строки можно склеивать, даже если их записали с разными кавычками.

Пробел — такой же символ, как и другие, поэтому сколько пробелов поставите в строке, столько и получится в итоговой строке:

Спецсимволы, экранирование символов и raw-строки в Python

Перевод текста на новую строку в - изображение номер пять
Перевод текста на новую строку в — изображение номер пять

Спецсимволы — символы, которые отражают некое действие, например, символ новой строки, символ табуляции или клавиши BackSpace.

Регулярные выражения в - изображение номер шесть
Регулярные выражения в — изображение номер шесть

Здесь разберем самые основные, которые наиболее часто встречаются на практике.

Символ перевода строки \n

Полезная информация при написании кода на - изображение номер семь
Полезная информация при написании кода на — изображение номер семь

Если функция print() встречает в строке символ \n то следующий за ним текст переносится на новую строку:

Как видно переносится даже пробел, который идет после символа перевода строки \n.

Мы можем записать и полностью все слитно, и тогда лишних пробелов не будет:

Если проверить длину строки, то можно убедиться, что перенос строки является одним символом, хотя по факту состоит из двух — слеш и буква n:

Слово «привет» — 6 символов, слово «мир» — 3 символа, восклицательный знак — 1 символ и перенос строки — 1 символ.

Символ табуляции \t

Как напечатать табуляцию в - изображение номер восемь
Как напечатать табуляцию в — изображение номер восемь

Если функция print() встречает в строке символ \t то следующий за ним текст сдвигается на размер табуляции:

Символ обратного слеша \\

Как вывести обратный слэш в print - изображение номер девять
Как вывести обратный слэш в print — изображение номер девять

Этот символ нужен, когда необходимо вывести слеш в функции print(), но есть, какие либо помехи, например другие спецсимволы. А также для экранирования символов.

Мы получили не то, что хотели, вместо имени папки Python увидел символ переноса строки \n.

Чтобы такого не происходило нужно использовать символ обратного слеша:

Экранирование символов

Java - изображение номер десять
Java — изображение номер десять

Экранирование нужно для того, чтобы мы могли видеть при использовании функции print(), те данные, которые и планируем видеть.

Т.е. здесь у нас строка создается в одинарных кавычках, а в самом тексте строки используются двойные кавычки.

ЧИТАТЬ ТАКЖЕ:  Вывод данных на экран в Python: функция print и её возможности

«Сырые» raw-строки в Python

34 - изображение номер одиннадцать
34 — изображение номер одиннадцать

Сырые или необработанные строки нужны для того, чтобы выводить строки в буквальном виде, так как они записаны.

А если мы выведем raw-строку (для этого достаточно просто добавить буку r):

То мы видим, что вывелись абсолютно все символы, которые есть в строке, включая слеши для экранирования.

Raw-строки очень часто используют для вывода адресов и путей к файлам, чтобы не экранировать символы.

Экранирование слэша в Python

Python using backslash escape sequence - изображение номер двенадцать
Python using backslash escape sequence — изображение номер двенадцать

В Python символы, которые имеют специальное значение для интерпретатора, такие как слэш (/), могут быть экранированы. Экранирование символа означает, что его специальное значение игнорируется, и он воспринимается буквально. Для экранирования символов используется обратный слэш (\\).

Экранирование обратного слэша

05 - изображение номер тринадцать
05 — изображение номер тринадцать

В Python обратный слэш (\\) является экранирующим символом, что означает, что он может быть использован для того, чтобы указать, что следующий за ним символ должен быть воспринят буквально, а не как специальный символ. Для того чтобы вставить обратный слэш в строку, его нужно экранировать, используя два обратных слэша (\\\\). Например:

Экранирование прямого слэша

Повторим? - изображение номер четырнадцать
Повторим? — изображение номер четырнадцать

В Python прямой слэш (/) не является специальным символом, поэтому его не обязательно экранировать. Однако, если вам все же необходимо это сделать, вы можете использовать обратный слэш перед прямым слэшем:

Python Backslash

How to - изображение номер пятнадцать
How to — изображение номер пятнадцать

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

What is \\n (backslash n) - изображение номер шестнадцать
What is \\n (backslash n) — изображение номер шестнадцать

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).

First, the backslash character is a part of special character sequences such as the tab character \t or the new line character \n.

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

#15 - изображение номер семнадцать
#15 — изображение номер семнадцать

PEP-498 specifies that an f-string cannot contain a backslash character as a part of the expression inside the curly braces <>.

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:

  1. Как открыть порт на динамическом ip
  2. Как разделить плейлисты в яндекс музыке
  3. Как убрать значение в ячейке excel
  4. Как убрать ночной режим в ворде

Часто задаваемые вопросы о выводе обратного слэша в Python

Вопрос: Как вывести один обратный слэш в Python?
Ответ: Используйте двойной обратный слэш \\ в обычной строке или raw-строку r’\’.

Вопрос: Что такое raw-строка и как она помогает вывести обратный слэш?
Ответ: Raw-строка (префикс r) отключает экранирование, поэтому обратный слэш выводится как есть.

Вопрос: Почему print(‘\’) выдает ошибку?
Ответ: Потому что одиночный обратный слэш воспринимается как начало escape-последовательности, которая не завершена.

Вопрос: Как вывести путь к файлу Windows с обратными слэшами?
Ответ: Используйте raw-строку: r’C:\Users\Name’ или удвойте слэши: ‘C:\\Users\\Name’.

Вопрос: Можно ли использовать обратный слэш в f-строках?
Ответ: Да, но его нужно экранировать двойным слэшем или использовать raw f-строку (fr).

Вопрос: Что такое экранирование символов в Python?
Ответ: Это использование обратного слэша для придания специального значения символу (например, \n — перенос строки).

Вопрос: Как вывести обратный слэш в конце строки?
Ответ: Используйте ‘\\’ или raw-строку r’\’, но помните, что raw-строка не может заканчиваться одиночным обратным слэшем.

Вопрос: В чем разница между \\ и r’\’?
Ответ: \\ — это экранированный слэш в обычной строке, r’\’ — это raw-строка, где слэш не экранируется.

Вопрос: Как вывести несколько обратных слэшей подряд?
Ответ: Напишите нужное количество слэшей, каждый экранируя: ‘\\\\’ выведет \\.

Вопрос: Почему в Python обратный слэш используется для экранирования?
Ответ: Это стандартное соглашение, заимствованное из языка C, для представления специальных символов.