Python: экранирование кавычек
В этой краткой статье рассматривается использование одинарных, двойных и тройных кавычек в Python.
Одинарные и двойные кавычки — базовое использование
Чаще всего одинарные и двойные кавычки в Python используются при создании строк. В них заключается последовательность символов.
Строки, созданные с помощью одинарных и двойных кавычек, идентичны. Но нельзя их смешивать, так как это приведет к синтаксической ошибке.
Варианты экранирования
В Python если строка содержит специальные символы, такие как кавычки, мы должны экранировать их. Пример неправильного использования:
Чтобы не допустить эту ошибку, нужно экранировать одиночную кавычку, поставив перед ней обратную косую черту. Также можно использовать двойные кавычки вместо одинарных для обозначения строки:
Если строка содержит двойные кавычки, можно использовать одинарные. Тогда не придется экранировать двойные кавычки. Пример:
Но если в строке есть одинарные и двойные кавычки, и вы не экранируете содержащие строку, это приведет к синтаксической ошибке.
Тройные кавычки
Обозначение строк, содержащих одинарные и двойные кавычки
Мы можем использовать тройные кавычки (то есть три одинарные кавычки или три двойные кавычки) для представления строк с одинарными и двойными кавычками, чтобы исключить необходимость экранирования любых кавычек.
Например, для строки в приведенном выше коде использование тройных двойных кавычек приведет к синтаксической ошибке. Поэтому необходимо использовать тройные одинарные кавычки.
Многострочные строки
Также тройные кавычки используются для представления многострочной строки. Пример:
Этого же можно добиться, используя символ n для создания многострочных строк. Но это затрудняет чтение строки. А использование тройных кавычек позволяет записать строку так, как она есть.
Мы сразу видим, что является многострочным комментарием для функции.
Выводы
В этой статье мы рассмотрели применение одинарных, двойных и тройных кавычек в Python. Краткий обзор вариантов использования:
Одинарные и двойные кавычки
Тройные кавычки:
Дайте знать, что вы думаете по этой теме материала в комментариях. Мы очень благодарим вас за ваши комментарии, дизлайки, лайки, отклики, подписки!
Пожалуйста, оставьте свои мнения по текущей теме материала. Мы крайне благодарны вам за ваши комментарии, подписки, дизлайки, отклики, лайки!
Python: Кавычки
Какие из этих пяти вариантов — строки?
С первыми двумя все понятно, это точно строки, мы уже работали с подобными конструкциями и говорили, что строки — это наборы символов.
Любой одиночный символ в кавычках — это строка. Пустая строка » — это тоже строка. То есть строкой мы считаем всё, что находится внутри кавычек, даже если это пробел, один символ или вообще отсутствие символов.
Ранее в уроках мы записывали строки в одинарных кавычках, но это не единственный способ. Можно использовать и двойные:
Теперь представьте, что вы хотите напечатать строчку Dragon’s mother. Апостроф перед буквой s — это такой же символ, как одинарная кавычка. Попробуем:
Здесь нам помогут именно двойные кавычки. Такой вариант программы отработает корректно:
Теперь интерпретатор знает, что строка началась с двойной кавычки — значит и закончиться должна на двойной кавычке. А одинарная кавычка внутри стала частью строки.
Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных. Причем количество кавычек внутри самой строки не важно.
А что, если мы хотим создать такую строку:
В ней есть и одинарные и двойные кавычки. Как быть в этой ситуации? Нужно каким-то образом указать интерпретатору считать каждую кавычку частью строки, а не началом или концом строки.
Для этого используют символ экранирования: \ (обратный слэш). Если поставить \ перед кавычкой (одинарной или двойной), это скажет интерпретатору о том, что кавычку нужно рассматривать не как начало или конец строки, а как часть строки.
Посмотрите внимательно: нам нужно было добавить \ для двойных кавычек, но не для одинарной (апостроф), потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.
Задание
Напишите программу, которая выведет на экран:
Программа должна вывести на экран эту фразу в точности. Обратите внимание на кавычки в начале и в конце фразы:
Работа со строками в Python: литералы
Это первая часть о работе со строками, а именно о литералах строк.
Литералы строк
Работа со строками в Python очень удобна. Существует несколько литералов строк, которые мы сейчас и рассмотрим.
Строки в апострофах и в кавычках
Экранированные последовательности позволяют вставить символы, которые сложно ввести с клавиатуры.
| Экранированная последовательность | Назначение |
|---|---|
| \n | Перевод строки |
| \a | Звонок |
| \b | Забой |
| \f | Перевод страницы |
| \r | Возврат каретки |
| \t | Горизонтальная табуляция |
| \v | Вертикальная табуляция |
| \N | Идентификатор ID базы данных Юникода |
| \uhhhh | 16-битовый символ Юникода в 16-ричном представлении |
| \Uhhhh… | 32-битовый символ Юникода в 32-ричном представлении |
| \xhh | 16-ричное значение символа |
| \ooo | 8-ричное значение символа |
| \0 | Символ Null (не является признаком конца строки) |
Если перед открывающей кавычкой стоит символ ‘r’ (в любом регистре), то механизм экранирования отключается.
Но, несмотря на назначение, «сырая» строка не может заканчиваться символом обратного слэша. Пути решения:
Строки в тройных апострофах или кавычках
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд.
Это все о литералах строк и работе с ними. О функциях и методах строк я расскажу в следующей статье.
Как написать игру на Python3
Самоучитель Python3 для начинающих
Глава 5.4 Одинарные и двойные кавычки в Python3
Для вывода строковых значений в Python3 необязательно использовать одинарные кавычки. Если вы заключите текст, который необходимо вывести, в двойные кавычки, то эффект будет таким же.
Рис 5.4-1 Использование одинарных и двойных кавычек в Python3
Однако при попытке использовать разные типы кавычек в одной строке, будет немедленно выведено сообщение об ошибке:
Рис 5.4-2 Ошибка в использовании кавычек разных типов
Каждый может использовать тот тип кавычек, который ему больше нравится. Разницы не будет никакой. Просто будьте внимательны, чтобы не допустить использования разных типов кавычек в одном строковом значении.
Если строка заключена в одинарные кавычки, а вам по зарез нужно вывести на экран, какое-нибудь слово в одинарных кавычках, то их, кавычки, следует экранировать символом бэкслеша, как это было показано в Главе 5.2. Вообще, все кавычки, которые необходимо вывести на экран надежнее экранировать в любом случае:
Рис 5.4-3 Использование нескольких одинарных кавычек в строке
Как видите, хоть мы и использовали несколько однотипных кавычек в одной строке, они нормально напечатались. Однако, можно поступить и проще — просто используя различные типы кавычек для ограничения строки и выделения в ней отдельных слов. Так, если мы всю строку заключим в двойные скобки, то в экранировать одинарные кавычки внутри этой строки не нужно:
Рис. 5.4-4 Использование разных типов кавычек в одной строке.
Как видите, все сработало просто отлично. Разумеется, можно для выделения строки использовать одинарные кавычки, а слова, внутри этой строки, выделять двойными кавычками. Интерпретатор Python3 достаточно сообразителен, чтобы понять: если строка начинается одним типом кавычек, заканчиваться другим типом она не может. Как удобно — так и делайте.
Заключение.
На этом пятая глава заканчивается. Мы научились использовать ключевое слово end, функции print(), разобрались, как форматировать текст, который мы выводим пользователю. Кроме того, изучили нюансы применения одинарных и двойных кавычек в Python3.
Было бы очень хорошо, если бы вы написали свой вариант программы «Шутки». Даже если вы не знаете ни одной шутки — Интернет вам поможет отыскать что-нибудь подходящее. Зато вы сможете практически закрепить полученные знания.
Python с нуля — часть 7: строки
Строки (string) один из наиболее часто используемых типов данных в Python.
Создать строку можно просто заключив символы в кавычки, при этом для Python одинарные кавычки ( ‘ ‘ ) имеют такое же значение, как и двойные ( » » ).
Создаётся строка простым присваивание значения переменной. Например:
Получение значений из строк
Для доступа к отдельным символам в строке используются квадратные скобки с указанием индекса символа, допустимо выполнение “среза” (slicing), с указанием начального и конечного индекса.
Результат выполнения этого кода:
Обновление данных в строках
Вы можете обновлять информацию в строке, переназначая данные переменной:
Примечание: вообще, строки в Python являются неизменяемыми (immutable) объектами, и прямое присваивание нового значения элементу списка вызовет ошибку:
Но можно воспользоваться операцией конкатенации (см. ниже) для этого. При этом – сам объект в памяти остаётся прежним:
Escape-последовательности
В таблице ниже приводится список символов, которые не отображаются на экране при обработке.
Они обрабатываются как в одинарных, так и в двойных кавычках.
| Backslash notation | Hexadecimal character | Description |
|---|---|---|
| a | 0x07 | звуковой сигнал или предупреждение |
| b | 0x08 | возврат на одну позицию |
| cx | control-x | |
| C-x | control-x | |
| e | 0x1b | escape |
| f | 0x0c | команда принтера |
| M-C-x | meta-Control-x | |
| n | 0x0a | новая строка |
| nnn | восьмеричное значение | |
| r | 0x0d | возврат каретки |
| s | 0x20 | пробел |
| t | 0x09 | табуляция |
| v | 0x0b | вертикальная табуляция |
| x | символ x | |
| xnn | шестнадцатеричное значение |
Специальные строковые операторы
Предположим, переменная строки a содержит ‘Hello‘, а переменная b – ‘Python‘:
| Operator | Description | Example |
|---|---|---|
| + | конкатенация – добавление значений с обеих сторон от оператора | a + b вернёт HelloPython |
| * | повторение – создаёт новую строку, в которой объединены копии той же строки | a*2 вернёт HelloHello |
| [] | срез (slice) – возвращает символ с указанным индексом | a[1] вернёт e |
| [ : ] | срез диапазона – возвращает символы с заданном диапазоне индексов | a[1:4] вернёт ell |
| in | членство (membership) – возвращает истину (true, 1) если заданный символ присутствует в строке | H in a вернёт 1 |
| not in | членство (membership) – возвращает истину (true, 1) если заданный символ не присутствует в строке | M not in a вернёт 1 |
| r/R | обычная строка (raw string) – подавляет значение escape-последовательностей; синтаксис таких строк такой же, как и у обычных строк, за исключением оператора r или R, который добавляется непосредтсвенно перед открывающей кавычкой | print r’n’ вернёт n и print R’n’ вернёт n |
| % | format – выполнение форматирования строки | см. далее |
Оператор форматирования строк
Другой, более наглядный и простой пример:
В таблице представлен полный список символов, которые могут быть использованы с оператором % :
| Format Symbol | Conversion |
|---|---|
| %c | один символ |
| %s | преобразование строки данными другого str()-объекта |
| %i | алиас %d |
| %d | целое десятичное число |
| %u | то же, что и %d (устарев?) |
| %o | восьмеричное целое |
| %x | шестнадцатеричное целое (строчные буквы) |
| %X | шестнадцатеричное целое (ПРОПИСНЫЕ буквы) |
| %e | экспоненциальное представление (строчная ‘e’) |
| %E | экспоненциальное представление (прописная ‘e’) |
| %f | вещественное число в десятичном виде |
| %g | краткая версия для %f и %e |
| %G | краткая версия для %f и %E |
Кроме этого, есть дополнительные возможности:
| Symbol | Functionality |
|---|---|
| * | argument specifies width or precision |
| – | left justification |
| + | display the sign |
| leave a blank space before a positive number | |
| # | add the octal leading zero ( ‘0’ ) or hexadecimal leading ‘0x’ or ‘0X’, depending on whether ‘x’ or ‘X’ were used. |
| 0 | pad from left with zeros (instead of spaces) |
| % | ‘%%’ leaves you with a single literal ‘%’ |
| (var) | mapping variable (dictionary arguments) |
| m.n. | m is the minimum total width and n is the number of digits to display after the decimal point (if appl.) |
Тройные кавычки
Тройные кавычки в Python позволяют располагать текст в несколько строк и использовать в нём специальные символы, такие как табуляция ( t ), новая строка ( n ) и другие.
Примечание: кроме того, в функциях текст, заключённый в тройные кавычки, используется для документации функции.
Синтаксис тройных кавычек представляет собой набор из трёх открывающих последовательных одинарных или двойных кавычек – и трёх закрывающих.
Результат выполнения этого кода:
Обратите внимание, что каждый специальный символ был превращен в его “печатную форму”, а новые строки отображаются либо прямым переводом строки в тексте, либо escape-последовательностью ( n ).
“Сырые строки” (raw strings) не обрабатывают символ обратно слеша как специальный символ. Каждый символ, который указан в такой строке будет отображён “как есть”:
Результат выполнения этого кода:
Теперь – давайте сделаем “необработанную строку” с помощью символа r перед открывающей кавычкой:
Строки с unicode
Обычные строки в Python записываются с помощью таблицы 8-ми битной ASCII символов, тогда как Unicode-строки хранятся в 16-ти битной таблице. Это позволяет использовать более разнообразные символы в ней, включая специальные символы различных языков.
Мы ограничимся такой Unicode-строкой:
Результат её выполнения:
Встроенные строковые методы (или методы строк)
UPD: смотрите более полное описание строковых методов тут>>>.
В Python имеются такие встроенные методы для управление строками:



