Курс по Python: https://stepik.org/course/100707
Теперь, когда
познакомились со строками и их методами, пришло время узнать, какие специальные
символы могут содержать строки в Питоне. С одним из них мы уже сталкивались –
это символ перевода строки:
‘\n’
Я напомню,
например, когда задается многострочная строка:
text = """hello
python"""
то в ней
автоматически добавляет этот символ перевода между строками:
Причем, это один
символ, хотя он и выглядит как два символа: обратный слеш и n. Мы в этом
легко можем убедиться, если воспользоваться функцией:
Получим значения
12 = 5 + 6 + 1 – как раз число символов в двух строках плюс один символ
перевода строки.
Мало того, мы
можем его явно прописывать в любой строке, формируя многострочный текст,
например, так:
t = "panda needs\npython"
и, выводя эту
строку с помощью функции:
увидим две
строки.
Вообще, в
строках языка Python можно
прописывать следующие спецсимволы:
Обозначение
|
Описание
|
\n
|
Перевод
строки
|
\\
|
Символ
обратного слеша
|
\’
|
Символ
апострофа
|
\"
|
Символ
двойной кавычки
|
\a
|
Звуковой
сигнал
|
\b
|
Эмуляция
клавиши BackSpace
|
\f
|
Перевод
формата
|
\r
|
Возврат
каретки
|
\t
|
Горизонтальная
табуляция (размером в 4 пробела)
|
\v
|
Вертикальная
табуляция
|
\0
|
Символ
Null (не признак
конца строки)
|
\xhh
|
Символ
с шестнадцатиричным кодом hh
|
\ooo
|
Символ
с восьмиричным кодом ooo
|
\N{id}
|
Идентификатор
из кодовой таблицы Unicode
|
\uhhhh
|
16-битный
символ Unicode в
шестнадцатиричной форме
|
\Uhhhhhhhh
|
32-битный
символ Unicode в
шестнадцатиричной форме
|
\другое
|
Не
является экранированной последовательностью
|
Все их
запоминать совсем не обязательно, на практике используются, в основном:
\n, \\, \’, \", \t
Значительно реже
другие варианты. И, обратите внимание, перед каждым спецсимволом записан символ
обратного слеша. Это, своего рода, маркер начала спецсимвола. И если после
слеша идет одно из обозначений таблицы, то оно будет восприниматься как некая
управляющая последовательность.
Давайте я все
это продемонстрирую на примерах. Добавим в строку символ табуляции:
t = "\tpanda needs\npython"
Теперь функция print() интерпретирует
его, как особый горизонтальный отступ:
Если же мы
уберем букву t:
t = "\panda needs\npython"
то при печати
увидим просто обратный слеш. В действительности, здесь сработала последняя
строчка таблицы: когда не подходит ни одна последовательность, то просто
печатается обратный слеш.
Но здесь нужно
быть осторожным. Предположим, что мы слово needs хотим заключить
в обратные слеши:
t = "panda \needs\ python"
Однако, при печати:
первый слеш
пропадет, так как он будет восприниматься началом спецпоследовательности
символа переноса строки. Поэтому, для добавления символа обратного слеша в
строку, следует записывать два обратных слеша подряд:
t = "panda \\needs\\ python"
Тогда в строке
они будут автоматически заменены на один символ слеша и при выводе мы это и
видим. Это называется экранированием, когда мы символы с двойным назначением
записываем, добавляя перед ними обратный слеш. В данном случае получаем двойной
слеш.
Часто такие
символы следует прописывать при определении путей к файлам. Как мы знаем, в ОС Windows маршруты имеют
вид:
D:\Python\Projects\stepik\tex1.py
Здесь фигурируют
обратные слеши для разделения каталогов. Чтобы правильно описать такой путь,
слеши следует экранировать:
path = "D:\\Python\\Projects\\stepik\\tex1.py"
и при печати:
видим, что
маршрут определен верно. Если бы слеши не были экранированы, то получили бы
неверный путь к файлу:
path = "D:\Python\Projects\stepik\tex1.py"
Вот этот момент
следует хорошо запомнить.
Кроме обратного
слеша экранировать также следует и кавычки. Например, мы хотим сформировать
строку:
s = "Марка вина "Ягодка""
Внутри этой
строки имеются кавычки. Но эти же самые кавычки определяют начало и конец
строки в Python. Поэтому такая
запись приведет к синтаксической ошибке. Чтобы все работало корректно, нужно
выполнить экранирование кавычек:
s = "Марка вина \"Ягодка\""
Или, в данном
случае, можно было бы использовать одинарные кавычки для определения строки, а
внутри нее записать двойные:
s = 'Марка вина "Ягодка"'
Но на практике
рекомендуется всегда выполнять экранирование таких символов, чтобы избежать
случайных ошибок. Например, в этой строке уже нельзя просто так записать
одинарные кавычки:
s = 'Марка вина 'Ягодка''
Снова получим
синтаксическую ошибку, их нужно экранировать:
s = 'Марка вина \'Ягодка\''
В завершение
этого занятия отмечу, что в Python можно задавать,
так называемые, сырые (row) строки. Это строки, в которых
игнорируются спецпоследовательности и все символы воспринимаются буквально так,
как записаны. Например, если взять строку с путем к файлу:
path = "D:\\Python\\Projects\\stepik\\tex1.py"
то сейчас, при
отображении, мы видим по одному слешу:
Но, если
определить эту же строку, как сырую, добавив букву r перед ней:
path = r"D:\\Python\\Projects\\stepik\\tex1.py"
то при печати
увидим по два слеша, именно так, как прописали. Поэтому, в таких строках можно
убрать спецопределения и записывать строку буквально так, как она должна
выглядеть:
path = r"D:\Python\Projects\stepik\tex1.py"
На этом мы
завершим наше очередное занятие по Python. Из него вы
должны хорошо себе представлять, что такое спецсимволы и экранирование
символов. Какие основные спецсимволы для строк существуют и как определяются
сырые строки.
Курс по Python: https://stepik.org/course/100707