Строки
Строка (тип str
) - упорядоченная последовательность символов, используемая для хранения текстовой информации и произвольной совокупности байтов. Строго говоря, строки представляют собой последовательности односимвольных строк.
С функциональной точки зрения строки допускается использовать для представления почти всего, что может кодироваться как текст или байты. В отношении текста сюда входят символы или слова (например, ваше имя), содержимое текстовых файлов, загруженное в память, адреса в Интернете, исходный код Python и так далее. Строки могут также применяться для хранения низкоуровневых байтов, используемых в файлах медиаданных и при передаче через сеть и так далее.
В отличие от многих других языков, в Python не предусмотрен отдельный тип для индивидуальных символов; взамен применяются односимвольные строки.
В Python строки относятся к категории неизменяемых последовательностей, а это значит, что содержащиеся в них символы имеют позиционный порядок слева направо и не могут быть модифицированы на месте.
Строковые литералы
Литерал - запись в исходном коде компьютерной программы, представляющая фиксированное значение. Литералы представляют собой константы, включаемые непосредственно в текст программы. В отличие от прочих элементов языка, литералы не могут быть изменены в тексте программы.
В Python существует много способов записи строк в коде:
одинарные кавычки -
'eat at joe"s'
;двойные кавычки -
"eat at joe's"
;утроенные кавычки -
""" eat at joe's """"
,''' eat at joe's '''
;управляющие последовательности -
"j\n\o\a\e"
;неформатированные строки -
r"C:\temp\text.txt"
;байтовый литерал -
b'j\n\o\a\e'
.
Строки в одинарных и двойных кавычках
Среди строк символы одинарных и двойных кавычек взаимозаменяемы. То есть строковые литералы можно записывать заключенными либо в две одинарных, либо в две двойных кавычки - две формы работают одинаково и возвращают объект того же самого типа. Например, две следующие строки идентичны
Причина поддержки обеих форм связана с тем, что она позволяет внедрять символ кавычек другого вида внутрь строки. Вы можете внедрять символ одинарной кавычки в строку, заключенную в символы двойной кавычки, и наоборот:
Обратите внимание, что Python выполнит автоматическую конкатенацию соседних строк в любом выражении (автоматическая конкатенация аналогична операции +)
Добавление запятых между этими строками привело бы к созданию кортежа, а не строки (автоматическое создание кортежа справедливо и для других типов данных)
Управляющие последовательности
Управляющие последовательности (escape sequences) позволяют внедрять в строки символы, которые не могут быть легко набраны на клавиатуре. Символ \
и один или более следующих за ним символов в строковом литерале в итоговой строке заменяются одиночным символом, который имеет двоичное значение, указанное управляющей последовательностью.
Разберем следующий пример
Два символа \n
обозначают одиночный символ - символ новой строки в таблице символов. Последовательность \t
заменяется символом табуляции.
Примечательно, что если получить длину строки с помощью функции len()
, то она вернет нам фактическую длину строки, независимо от того, каким образом они кодируются или отображаются
В нашем случае строка имеет длину 5 символов - "joe" + 1 символ переноса строки + 1 символ табуляции. Исходные символы обратной косой черты в предыдущем результате не хранятся со строкой в памяти; они используются лишь для описания значений специальных символов.
Последовательность | Описание |
| продолжение строки в многострочном литерале |
| обратная косая черта (символ |
| одинарная кавычка ( |
| двойные кавычки ( |
| звуковой сигнал |
| backspace |
| новая страница (formfeed) |
| новая строка |
| возврат каретки |
| горизонтальная табуляция |
| вертикальная табуляция |
Форматирование строк
Python предлагает более развитый способ для объединения задач строковой обработки - форматирование строк позволяет выполнять множество подстановок, специфических для типов, в строке за единственный шаг. Механизм форматирования может быть очень удобным, особенно когда форматируемый текст подлежит отображению для пользователей программы.
Форматирование строк в Python 3 может осуществляться двумя способами. Первый метод основан на использовании функции format()
. Эта функция объединяет форматную строку, содержащую поля-заменители в фигурных скобках {}
, со значениями, взятыми из параметров функции format()
. Если потребуется включить в строку литерал {
или }
, удвойте его ({{
и }}
соответственно).
Функция format()
предоставляет мощный мини-язык форматирования строк, дающий почти бесконечные возможности для управления форматированием строк. С другой стороны, в большинстве стандартных ситуаций он достаточно прост в использовании, поэтом в этом разделе будут рассмотрены некоторые шаблоны. Если же вам потребуются нетривиальные возможности, обращайтесь к разделу, посвященному форматированию строк, в документации стандартной библиотеки.
Функция format() и позиционные параметры
Простой способ использования строкой функции format()
связан с заменой нумерованных полей, соответствующих параметрам, переданным функции format()
Пример выше содержим три поля-заменителя - {0}
, {1}
и {2}
, - которые последовательно заменяются первым, вторым и третьим параметрами. Где бы в форматной строке ни размещалось поле {0}
, оно всегда замещается первым параметром и так далее.
Именованные параметры
Метод format()
также распознает именованные параметры и поля замены
В этом случае параметр выбирается по совпадению имени поля-заменителя с именем параметра, переданного команде format()
.
Допускается использование позиционных параметров вместе с именованными; в этих параметрах можно даже обращаться к атрибутам и элементам
В данном случае первый параметр является позиционным, тогда как обозначение user[1]
относится ко второму элементу именованного параметра user
.
Спецификаторы формата
Спецификаторы формата позволяют задать результат форматирования с еще большей точностью и широтой возможностей, чем форматные последовательности в старом стиле форматирования строк.
Спецификатор формата позволяет задать символ-заполнитель, тип выравнивания, знак, ширину, точность и тип данных при подстановке на место поля-заменителя. Как упоминалось ранее, синтаксис спецификаторов формата представляет отдельный мини-язык, слишком сложный для того, чтобы полностью описывать его в рамках данного курса. Приведем несколько примеров
Строковая интерполяция
В Python 3.6 появился механизм создания строковых констант, содержащих произвольные значения; он называется строковой интерполяцией. Строковая интерполяция позволяет включать значения выражений Python в строковые литералы. Эти f-строки (как они часто называются из-за префикса f
) используют синтаксис, сходный с синтаксисом метода format()
, но с несколько большей эффективностью. Приведем несколько примеров
Как и в случае с методом format()
, можно добавить спецификаторы формата
Так как строковая интерполяция появилась в Python совсем недавно, пока неясно, как она будет использоваться.
Last updated