Python экранировать обратный слэш

Спецсимволы, экранирование символов и raw-строки в 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:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Главное о переменных в Python: объявление, присваивание, удаление, именование

Главное о переменных в Python: объявление, присваивание, удаление, именование

Как использовать логические операторы and, or и not в Python — разбираем на примерах

Как использовать логические операторы and, or и not в Python — разбираем на примерах

Как правильно вызывать функцию в цикле Python

Как правильно вызывать функцию в цикле Python

Инкапсуляция в Python: разбираем на простых примерах

Инкапсуляция в Python: разбираем на простых примерах

Основные способы конвертации кортежа в список в Python

Основные способы конвертации кортежа в список в Python

Очищаем строки с помощью методов strip(), rstrip() и lstrip() в Python

Очищаем строки с помощью методов strip(), rstrip() и lstrip() в Python

Источник

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

Теперь, когда познакомились со строками и их методами, пришло время узнать, какие специальные символы могут содержать строки в Питоне. С одним из них мы уже сталкивались – это символ перевода строки:

Я напомню, например, когда задается многострочная строка:

то в ней автоматически добавляет этот символ перевода между строками:

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

Получим значения 12 = 5 + 6 + 1 – как раз число символов в двух строках плюс один символ перевода строки.

Мало того, мы можем его явно прописывать в любой строке, формируя многострочный текст, например, так:

и, выводя эту строку с помощью функции:

Все их запоминать совсем не обязательно, на практике используются, в основном:

Значительно реже другие варианты. И, обратите внимание, перед каждым спецсимволом записан символ обратного слеша. Это, своего рода, маркер начала спецсимвола. И если после слеша идет одно из обозначений таблицы, то оно будет восприниматься как некая управляющая последовательность.

Давайте я все это продемонстрирую на примерах. Добавим в строку символ табуляции:

Теперь функция print() интерпретирует его, как особый горизонтальный отступ:

Если же мы уберем букву t:

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

Но здесь нужно быть осторожным. Предположим, что мы слово needs хотим заключить в обратные слеши:

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

Тогда в строке они будут автоматически заменены на один символ слеша и при выводе мы это и видим. Это называется экранированием, когда мы символы с двойным назначением записываем, добавляя перед ними обратный слеш. В данном случае получаем двойной слеш.

Часто такие символы следует прописывать при определении путей к файлам. Как мы знаем, в ОС Windows маршруты имеют вид:

Здесь фигурируют обратные слеши для разделения каталогов. Чтобы правильно описать такой путь, слеши следует экранировать:

path = "D:\\Python\\Projects\\stepik\\tex1.py"

видим, что маршрут определен верно. Если бы слеши не были экранированы, то получили бы неверный путь к файлу:

path = "D:\Python\Projects\stepik\tex1.py"

Вот этот момент следует хорошо запомнить.

Кроме обратного слеша экранировать также следует и кавычки. Например, мы хотим сформировать строку:

Внутри этой строки имеются кавычки. Но эти же самые кавычки определяют начало и конец строки в Python. Поэтому такая запись приведет к синтаксической ошибке. Чтобы все работало корректно, нужно выполнить экранирование кавычек:

Или, в данном случае, можно было бы использовать одинарные кавычки для определения строки, а внутри нее записать двойные:

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

Снова получим синтаксическую ошибку, их нужно экранировать:

В завершение этого занятия отмечу, что в 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. Из него вы должны хорошо себе представлять, что такое спецсимволы и экранирование символов. Какие основные спецсимволы для строк существуют и как определяются сырые строки.

Видео по теме

#1. Первое знакомство с Python Установка на компьютер

#2. Варианты исполнения команд. Переходим в PyCharm

#3. Переменные, оператор присваивания, функции type и id

#4. Числовые типы, арифметические операции

#5. Математические функции и работа с модулем math

#6. Функции print() и input(). Преобразование строк в числа int() и float()

#7. Логический тип bool. Операторы сравнения и операторы and, or, not

#8. Введение в строки. Базовые операции над строками

#9. Знакомство с индексами и срезами строк

#11. Спецсимволы, экранирование символов, row-строки

#12. Форматирование строк: метод format и F-строки

#13. Списки — операторы и функции работы с ними

#14. Срезы списков и сравнение списков

#15. Основные методы списков

#16. Вложенные списки, многомерные списки

#17. Условный оператор if. Конструкция if-else

#18. Вложенные условия и множественный выбор. Конструкция if-elif-else

#19. Тернарный условный оператор. Вложенное тернарное условие

#21. Операторы циклов break, continue и else

#22. Оператор цикла for. Функция range()

#23. Примеры работы оператора цикла for. Функция enumerate()

#24. Итератор и итерируемые объекты. Функции iter() и next()

#25. Вложенные циклы. Примеры задач с вложенными циклами

#26. Треугольник Паскаля как пример работы вложенных циклов

#27. Генераторы списков (List comprehensions)

#28. Вложенные генераторы списков

#29. Введение в словари (dict). Базовые операции над словарями

#30. Методы словаря, перебор элементов словаря в цикле

#31. Кортежи (tuple) и их методы

#32. Множества (set) и их методы

#33. Операции над множествами, сравнение множеств

#34. Генераторы множеств и генераторы словарей

#35. Функции: первое знакомство, определение def и их вызов

#36. Оператор return в функциях. Функциональное программирование

#37. Алгоритм Евклида для нахождения НОД

#38. Именованные аргументы. Фактические и формальные параметры

#39. Функции с произвольным числом параметров *args и **kwargs

#40. Операторы * и ** для упаковки и распаковки коллекций

#42. Анонимные (lambda) функции

#43. Области видимости переменных. Ключевые слова global и nonlocal

#45. Введение в декораторы функций

#46. Декораторы с параметрами. Сохранение свойств декорируемых функций

#47. Импорт стандартных модулей. Команды import и from

#48. Импорт собственных модулей

#49. Установка сторонних модулей (pip install). Пакетная установка

#50. Пакеты (package) в Python. Вложенные пакеты

#51. Функция open. Чтение данных из файла

#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов

#53. Запись данных в файл в текстовом и бинарном режимах

#55. Функция-генератор. Оператор yield

#56. Функция map. Примеры ее использования

#57. Функция filter для отбора значений итерируемых объектов

#58. Функция zip. Примеры использования

#59. Сортировка с помощью метода sort и функции sorted

#60. Аргумент key для сортировки коллекций по ключу

#61. Функции isinstance и type для проверки типов данных

#62. Функции all и any. Примеры их использования

#63. Расширенное представление чисел. Системы счисления

#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы

#65. Модуль random стандартной библиотеки

#66. Аннотация базовыми типами

#67. Аннотации типов коллекций

#68. Аннотации типов на уровне классов

#69. Конструкция match/case. Первое знакомство

#70. Конструкция match/case с кортежами и списками

#71. Конструкция match/case со словарями и множествами

#72. Конструкция match/case. Примеры и особенности использования

© 2023 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта

Источник

Читайте также:  jQuery, Ajax and Servlet/JSP integration example
Оцените статью