- Python: Кавычки
- Задание
- Python: экранирование кавычек
- Одинарные и двойные кавычки — базовое использование
- Варианты экранирования
- Тройные кавычки
- Обозначение строк, содержащих одинарные и двойные кавычки
- Многострочные строки
- Выводы
- Одинарные и двойные кавычки
- Тройные кавычки:
- Форматирование текста в Python 3
- Строковые литералы
- Кавычки и апострофы
- Разбиение строки
- Управляющие последовательности
- Как отключить управляющие последовательности
- Заключение
Python: Кавычки
В этом уроке мы разберемся, что такое строка и какую роль в коде играют кавычки.
Определить строку довольно просто — это некий набор символов. Представим, что у нас есть такие записи:
Какие из этих вариантов — строки? На самом деле, все пять вариантов подходят:
- С ‘Hello’ и ‘Goodbye’ все очевидно — мы уже работали с подобными конструкциями и называли их строками
- ‘G’ и ‘ ‘ — тоже строки, просто в них всего по одному символу
- » — это пустая строка, потому в ней ноль символов
Строкой мы считаем все, что находится внутри кавычек: даже если это пробел, один символ или вообще отсутствие символов.
Выше мы записывали строки в одинарных кавычках, но это не единственный способ. Можно использовать и двойные:
Теперь представьте, что вы хотите напечатать строчку Dragon’s mother. Апостроф перед буквой s — это такой же символ, как одинарная кавычка. Попробуем:
print('Dragon's mother') # SyntaxError: invalid syntax
Такая программа не будет работать. С точки зрения Python строчка началась с одинарной кавычки, а потом закончилась после слова dragon. Дальше были символы s mother без кавычек — значит, это не строка. А потом была одна открывающая строку кавычка, которая так и не закрылась: ‘) . Этот код содержит синтаксическую ошибку — это видно даже по тому, как подсвечен код.
Чтобы избежать этой ошибки, мы используем двойные кавычки. Такой вариант программы сработает верно:
Теперь интерпретатор знает, что строка началась с двойной кавычки и закончиться должна тоже на двойной кавычке. А одинарная кавычка внутри стала частью строки.
Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных. Причем количество кавычек внутри самой строки неважно.
Теперь представим, что мы хотим создать такую строку:
В ней есть и одинарные, и двойные кавычки. Нам нужно каким-то образом указать интерпретатору, что кавычки — это один из символов внутри строки, а не начало или конец строки.
Для этого используют символ экранирования: \ — обратный слэш. Если мы поставим \ перед кавычкой (одинарной или двойной), то интерпретатор распознает кавычку как обычный символ внутри строки, а не начало или конец строки:
# Экранируем кавычки вокруг No, чтобы интерпретатор # распознал их как часть строки print("Dragon's mother said \"No\"") # => Dragon's mother said "No"
Обратите внимание, что в примере выше нам не пришлось экранировать одинарную кавычку (апостроф ‘s), потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.
Если нужно вывести сам обратный слеш, то работает такое же правило. Как и любой другой специальный символ, его надо экранировать:
Задание
Напишите программу, которая выведет на экран:
"Khal Drogo's favorite word is "athjahakar""
Программа должна вывести на экран эту фразу в точности. Обратите внимание на кавычки в начале и в конце фразы:
"Khal Drogo's favorite word is "athjahakar""
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Python: экранирование кавычек
В этой краткой статье рассматривается использование одинарных, двойных и тройных кавычек в Python.
Одинарные и двойные кавычки — базовое использование
Чаще всего одинарные и двойные кавычки в Python используются при создании строк. В них заключается последовательность символов.
>>> quotes_single = 'a_string' >>> quotes_double = "a_string" >>> quotes_single == quotes_double True
Строки, созданные с помощью одинарных и двойных кавычек, идентичны. Но нельзя их смешивать, так как это приведет к синтаксической ошибке.
>>> "mixed quotes' File "", line 1 "mixed quotes' ^ SyntaxError: EOL while scanning string literal >>> 'mixed quotes" File "", line 1 'mixed quotes" ^ SyntaxError: EOL while scanning string literal
Варианты экранирования
В Python если строка содержит специальные символы, такие как кавычки, мы должны экранировать их. Пример неправильного использования:
>>> 'It's a bad example.' File "", line 1 'It's a bad example.' ^ SyntaxError: invalid syntax
Чтобы не допустить эту ошибку, нужно экранировать одиночную кавычку, поставив перед ней обратную косую черту. Также можно использовать двойные кавычки вместо одинарных для обозначения строки:
>>> 'It's a good example.' "It's a good example." >>> "It's a good example." "It's a good example."
Если строка содержит двойные кавычки, можно использовать одинарные. Тогда не придется экранировать двойные кавычки. Пример:
>>> 'She said, "Thank you!"' 'She said, "Thank you!"'
Но если в строке есть одинарные и двойные кавычки, и вы не экранируете содержащие строку, это приведет к синтаксической ошибке.
>>> print('She said, "Thank you! It's mine."') File "", line 1 print('She said, "Thank you! It's mine."') ^ SyntaxError: invalid syntax >>> print('She said, "Thank you! It's mine."') She said, "Thank you! It's mine."
Тройные кавычки
Обозначение строк, содержащих одинарные и двойные кавычки
Мы можем использовать тройные кавычки (то есть три одинарные кавычки или три двойные кавычки) для представления строк с одинарными и двойными кавычками, чтобы исключить необходимость экранирования любых кавычек.
>>> print('''She said, "Thank you! It's mine."''') She said, "Thank you! It's mine."
К огда строка начинается или заканчивается одинарной (двойной) кавычкой, и мы хотим использовать тройные кавычки для обозначения строки, нужно применять те, которые отличаются от начальной или конечной .
Например, для строки в приведенном выше коде использование тройных двойных кавычек приведет к синтаксической ошибке. Поэтому необходимо использовать тройные одинарные кавычки.
>>> print("""She said, "Thank you! It's mine."""") File "", line 1 print("""She said, "Thank you! It's mine."""") ^ SyntaxError: EOL while scanning string literal
Многострочные строки
Также тройные кавычки используются для представления многострочной строки. Пример:
>>> print("""Hello . World . !""") Hello World !
Этого же можно добиться, используя символ n для создания многострочных строк. Но это затрудняет чтение строки. А использование тройных кавычек позволяет записать строку так, как она есть.
>>> def multiple_line_comment(a, b): . ''' . a is a string # other additional description . b is a list of integers # other additional description . ''' . pass . >>> print(multiple_line_comment.__doc__) a is a string # other additional description b is a list of integers # other additional description
Мы сразу видим, что является многострочным комментарием для функции.
Выводы
В этой статье мы рассмотрели применение одинарных, двойных и тройных кавычек в Python. Краткий обзор вариантов использования:
Одинарные и двойные кавычки
- Используются для определения строк.
- Применяйте одинарные кавычки для определения строк, чтобы избежать необходимости экранирования двойных кавычек в строке.
Тройные кавычки:
- Используются для определения строк, содержащих как одинарные, так и двойные кавычки. Поэтому экранирование не требуется.
- Используются для определения многострочных строк.
Сергей Бензенко автор-переводчик статьи « Single, Double, and Triple Quotes in Python »
Пожалуйста, опубликуйте свои комментарии по текущей теме материала. Мы очень благодарим вас за ваши комментарии, подписки, дизлайки, отклики, лайки!
Форматирование текста в Python 3
Строки часто состоят из обычного текста, следовательно, есть много ситуаций, в которых разработчику необходимо иметь возможность изменить внешний вид строки, сделать её более читабельной.
Данное руководство рассматривает несколько способов форматирования строк Python.
Строковые литералы
В чём разница между строковым литералом и значением строки? Строковый литерал – это то, что вы видите в коде программы, включая кавычки. Значение строки – это то, что появляется на экране при вызове функции print() или запуске программы.
К примеру, в программе Hello, World!:
Значение строки появляется в окне терминала при запуске программы Python.
Однако бывают случаи, когда значение строки должно содержать кавычки. При этом нужно форматировать литерал.
Кавычки и апострофы
В Python строку можно заключать как одиночные, так и в двойные кавычки. Потому значение строки взять в кавычки очень просто: можно просто поместить значение в двойные кавычки, а саму строку – взять в одиночные кавычки. Например:
Чтобы использовать в тексте апостроф, возьмите строку в двойные кавычки:
Как видите, вставить апостроф или взять цитату в кавычки очень просто: достаточно научиться комбинировать двойные и одиночные кавычки.
Разбиение строки
Вы можете разбить строку на несколько строк, чтобы сделать текст более удобным для чтения. Это позволяет группировать строки в простой для восприятия, упорядоченный текст. К примеру, так вы можете правильно отобразить стих или текст песни.
Для этого используйте тройные одиночные (”’) или тройные двойные кавычки (“””):
»’
This string is on
multiple lines
within three single
quotes on either side.
»’
«»»
This string is on
multiple lines
within three double
quotes on either side.
«»»
Управляющие последовательности
Ещё один способ отредактировать строку – использовать управляющие последовательности.
Все они начинаются с обратного слеша (\), после чего идёт специальный символ.
Последовательность | Функция |
\ | Символ новой строки |
\\ | Обратный слеш (\) |
\’ | Апостроф или одинарная кавычка |
\” | Двойные кавычки |
\n | Разрыв строки |
\t | Горизонтальный отступ |
Попробуйте использовать управляющую последовательность, чтобы добавить кавычки в строку:
print(«8host says, \»Hello!\»»)
8host says, «Hello!»
Управляющая последовательность \” взяла строку Hello! в двойные кавычки.
Аналогично, вы можете использовать последовательность \’, чтобы добавить апостроф:
print(‘Jenny\’s dress is red.’)
Jenny’s dress is red.
Используя управляющую последовательность, вы можете взять строку в одинарные кавычки, даже если в ней нужен апостроф.
При использовании тройных кавычек вы можете заметить, что в верхней и нижней части при выводе строки остаётся свободное пространство. Чтобы удалить эти пробелы, воспользуйтесь последовательностью \ бежать в верхней и нижней части строки.
«»»\
This multi-line string
has no space at the
top or the bottom
when it prints.\
«»»
Также можно разделить строку на несколько строк с помощью последовательности \n:
print(«This string\nspans multiple\nlines.»)
This string
spans multiple
lines.
Управляющие последовательности можно комбинировать. Попробуйте вывести несколько строк и добавить табуляцию.
print(«1.\tShark\n2.\tShrimp\n10.\tSquid»)
1. Shark
2. Shrimp
3. Squid
Горизонтальный отступ обеспечивает выравнивание внутри второго столбца, благодаря чему текст становится читабельным.
Управляющие последовательности позволяют форматировать строки, которые невозможно или очень сложно отформатировать простым чередованием кавычек. К примеру, как без помощи последовательностей отформатировать строку:
July says, «Is Jenny’s dress red?»
Как отключить управляющие последовательности
Бывают ситуации, когда строка должна отображать символ, входящий в управляющую последовательность: например, в строке должен быть обратный слеш.
Чтобы Python читал строку буквально, не выполняя управляющих последовательностей, используется оператор r (raw string). Чтобы создать «неформатированную» строку, нужно просто добавить r перед кавычками:
print(r» July says,\»Is Jenny’\s dress red?\»»)
July says,\»Is Jenny’\s dress red?\»
Заключение
Теперь вы знакомы с основными методами форматирования строк в Python 3. Это позволит вам сделать строки, отображаемые программой, удобными и простыми для восприятия пользователей.