Спецсимволы — символы, которые отражают некое действие, например, символ новой строки, символ табуляции или клавиши BackSpace.
Вот основные спецсимволы Python:
Здесь разберем самые основные, которые наиболее часто встречаются на практике.
Если функция print() встречает в строке символ \n
то следующий за ним текст переносится на новую строку:
s = 'Привет \n мир!'
print(s)
#Привет
# мир!
Как видно переносится даже пробел, который идет после символа перевода строки \n
.
Мы можем записать и полностью все слитно, и тогда лишних пробелов не будет:
s = 'Привет\nмир!'
print(s)
#Привет
#мир!
Если проверить длину строки, то можно убедиться, что перенос строки является одним символом, хотя по факту состоит из двух — слеш и буква n
:
s = 'Привет\nмир!'
print(s)
print(len(s))
#Привет
#мир!
#11
Слово «привет» — 6 символов, слово «мир» — 3 символа, восклицательный знак — 1 символ и перенос строки — 1 символ.
Если функция 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)
#График работы магазина "Фасоль" в Краснодаре
Т.е. здесь у нас строка создается в одинарных кавычках, а в самом тексте строки используются двойные кавычки.
Таким образом, можно экранировать любые спецсимволы.
Сырые или необработанные строки нужны для того, чтобы выводить строки в буквальном виде, так как они записаны.
Например, создадим строку с экранированными символами:
s = 'Папка с:\\name\\ содержит имена от \'А\' до \'Я\''
print(s)
#Папка с:\name\ содержит имена от 'А' до 'Я'
Видно, что слеш, для экранирования символов не выводится.
А если мы выведем raw-строку (для этого достаточно просто добавить буку r
):
s = r'Папка с:\\name\\ содержит имена от \'А\' до \'Я\''
print(s)
#Папка с:\\name\\ содержит имена от \'А\' до \'Я\'
То мы видим, что вывелись абсолютно все символы, которые есть в строке, включая слеши для экранирования.
Raw-строки очень часто используют для вывода адресов и путей к файлам, чтобы не экранировать символы.
Содержание: