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

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

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

Вот основные спецсимволы Python:

список спецсимволов python

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

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

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

s = 'Привет \n мир!'
print(s) 
#Привет 
# мир!

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

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

s = 'Привет\nмир!'
print(s) 
#Привет
#мир!

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

s = 'Привет\nмир!'
print(s) 
print(len(s))
#Привет
#мир!
#11

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

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

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

s = 'Привет\tмир!'
print(s) 
#Привет    мир!

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

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

Например, нужно вывести такую строку Папка \name\:

s = 'Папка с:\name\ содержит имена'
print(s) 
#Папка с:
#ame\ содержит имена

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

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

s = 'Папка с:\\name\ содержит имена'
print(s)
#Папка с:\name\ содержит имена

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

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

Например, если в кавычках будут еще одни кавычки, это вызовет ошибку:

s = 'График работы магазина 'Фасоль' в Краснодаре'
print(s) 
#Syntax Error: invalid syntax: <string>

Для избегания этой ошибки необходимо экранировать кавычки слешем:

s = 'График работы магазина \'Фасоль\' в Краснодаре'
print(s) 
#График работы магазина 'Фасоль' в Краснодаре

Также можно вывести кавычки внутри других кавычек, если они разные:

s = 'График работы магазина "Фасоль" в Краснодаре'
print(s)
#График работы магазина "Фасоль" в Краснодаре

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

Таким образом, можно экранировать любые спецсимволы.

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

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

Например, создадим строку с экранированными символами:

s = 'Папка с:\\name\\ содержит имена от \'А\' до \'Я\''
print(s)
#Папка с:\name\ содержит имена от 'А' до 'Я'

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

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

s = r'Папка с:\\name\\ содержит имена от \'А\' до \'Я\''
print(s)
#Папка с:\\name\\ содержит имена от \'А\' до \'Я\'

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

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

Содержание: