Работа со строками в Python: литералы
Строки в Python — упорядоченные последовательности символов, используемые для хранения и представления текстовой информации, поэтому с помощью строк можно работать со всем, что может быть представлено в текстовой форме.
Это первая часть о работе со строками, а именно о литералах строк.
Литералы строк
Работа со строками в Python очень удобна. Существует несколько литералов строк, которые мы сейчас и рассмотрим.
Строки в апострофах и в кавычках
Строки в апострофах и в кавычках - одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в литералы строк символы кавычек или апострофов, не используя экранирование.
Экранированные последовательности — служебные символы
Экранированные последовательности позволяют вставить символы, которые сложно ввести с клавиатуры.
| Экранированная последовательность | Назначение |
|---|---|
| \n | Перевод строки |
| \a | Звонок |
| \b | Забой |
| \f | Перевод страницы |
| \r | Возврат каретки |
| \t | Горизонтальная табуляция |
| \v | Вертикальная табуляция |
| \N | Идентификатор ID базы данных Юникода |
| \uhhhh | 16-битовый символ Юникода в 16-ричном представлении |
| \Uhhhh… | 32-битовый символ Юникода в 32-ричном представлении |
| \xhh | 16-ричное значение символа |
| \ooo | 8-ричное значение символа |
| \0 | Символ Null (не является признаком конца строки) |
«Сырые» строки — подавляют экранирование
Если перед открывающей кавычкой стоит символ ‘r’ (в любом регистре), то механизм экранирования отключается.
Но, несмотря на назначение, "сырая" строка не может заканчиваться символом обратного слэша. Пути решения:
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд.
Это все о литералах строк и работе с ними. О функциях и методах строк я расскажу в следующей статье.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Управляющие символы \n \t и прочие
Время от времени в коде вы можете встретить символы типа \n , \r , \t и прочие.
Например, посмотрите что будет, если исполнить следующий код:
print('раз\tдва\tтри\nuno\tdos\ttres')
# раз два три
# uno dos tres
Можно заметить, что вместо \t у нас появился отступ, а вместо \n переход на новую строку.
Символы вроде \t и \n — это управляющие символы, они управляют выводом, например модифицируют его.
Вот некоторые управляющие символы и их смысл:
| \n | (newline) перевод каретки на следующую строку |
| \r | (return) перевод каретки на в начало текущей строки |
| \t | (tab) табуляция (отступ, красная строка) |
| \b | (backspace) перевод каретки на один символ назад |
На заметку
В качестве разделителя строк в разных системах могут использоваться разные последовательности. Например, в Windows строки разделяются при помощи \r\n , а в Unix при помощи \n .
Как перевести текст на новую строку в Python
Символ новой строки используется в Python, чтобы отмечать конец одной строки и начало новой. Важно понимать, как использовать его для вывода в консоль и работы с файлами.
В этом материале речь пойдет о следующем:
- Как определять символ новой строки в Python.
- Как использовать символ новой строки в строках и инструкциях вывода.
- Вывод текста без добавления символа новой строки в конце.
Символ новой строки
Символ новой строки в Python выглядит так \n . Он состоит из двух символов:
- Обратной косой черты.
- Символа n (в нижнем регистре).
Если встретили этот символ в строке, то знайте, что он указывает на то, что текущая строка заканчивается здесь, а новая начинается сразу после нее.
>>> print("Hello\nWorld!") Hello World!
Его же можно использовать в f-строках: print(f"Hello\nWorld!") .
Символ новой строки в print
По умолчанию инструкции вывода добавляют символ новой строки «за кулисами» в конце строки. Вот так:

Это поведение описано в документации Python. Значение параметра end встроенной функции print по умолчанию — \n . Именно таким образом символ новой строки добавляется в конце строки.
Вот определение функции:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
Значением end='\n' , поэтому именно этот символ будет добавлен к строке.
Если использовать только одну инструкцию print , то на такое поведение можно и не обратить внимание, потому что будет выведена лишь одна строка. Но если использовать сразу несколько таких инструкций:
Что значит n% и как работает выражение n%9 or n and 9 в целом?
И здесь начинается самое интересное, а именно: "В языке Python операторы and и or, как вы и ожидали, выполняют булевы операции, но они не возвращают булевы значения: результатом всегда является значение одного из операндов.
Для оператора and: При использовании оператора and, значения вычисляются в булевом контексте слева напрво. Значения 0, '', [], (), <> и None являются ложью, все остальное является истиной
Если какой-либо из операндов является ложью, результатом будет первое такое значение.
Если все значения являются истиной, так что в результате мы получаем последнее значение.
Аналогично для оператора or: при вычислении значения цепочки переменных, связанных or, будет возвращено значение первого операнда, который интерпретируется как "истина". (в случае чисел - первого ненулевого операнда). Если ВСЕ операнды в цепочке - ложь, то будет возвращено значение последнего"
Ну, и еще у нас есть приоритет операций. Приритет операций описан в разделе 6.17 доков по третьему питону, и, как и ожидаемо, сначала по приоритету идет вычисленеи остатка от деления, потом по приоритету идет and и наконец по риоритету следует or
Теперь смотрим, как это практически работает.
Сначала будет вычислен остаток от деления. Промежуточно назовем его my_mod
А потом, так как следующим выражением является or, происходит такой фокус: если my_mod не равен нулю - мы заканчиваем вычисления. И результатом вычислений будет my_mod.
Для меня лично это был довольно токий момент. (не совсем то, чего ожидаешь, когда знаешь, что у and приоритет выше.)
А вот если my_mod равно нулю - вот тогда будет вычислено (n and 9), в результате получим 9, если n>0.
Потом, так как my_mod равен нулю, происходит вычисление (my_mod or 9), в результате которого возвращается 9.
Значит, будет возвращен остаток от деления на 9, кроме тех случаев, когда остаток равен нулю. в этих случаях будет возвращенно число 9.
Вообще, в этом вопросе достаточно смысла, чтобы поговорить о нём и понять, понимает ли человек, как работают логические операторы в питоне (я - не понимал, пока не написал ответ 🙂
Спасибо dIm0n за подсказки.
