Строки уже упоминались в уроке о типах данных; рассмотрим их более подробно.
Строка — это сложный тип данных, представляющий собой последовательность символов.
Строки в языке программирования Python могут заключаться как в
одиночные, так и двойные кавычки. Однако, начало и конец строки должны
обрамляться одинаковым типом кавычек.
Существует специальная функция
len(), позволяющая
измерить длину строки. Результатом выполнения данной функции является
число, показывающее количество символов в строке.
Также для строк существуют операции
конкатенации (+) и
дублирования (*).
>>> len('It is a long string')
19
>>> '!!!' + ' Hello World ' + '!!!'
'!!! Hello World !!!'
>>> '-' * 20
'--------------------'
>>>
В последовательностях важен порядок символов, у каждого символа в строке есть уникальный порядковый номер —
индекс. Можно обращаться к конкретному символу в строке и извлекать его с помощью
оператора индексирования, который представляет собой квадратные скобки с номером символа в них.
>>> 'morning, afternoon, night'[1]
'o'
>>> tday = 'morning, afternoon, night'
>>> tday[4]
'i'
>>>
В примере, выражение 'morning, afternoon, night'[1] привело к
извлечению второго символа. Дело в том, что индексация начинается не с
единицы, а с нуля. Поэтому, когда требуется извлечь первый символ, то
оператор индексирования должен выглядеть так: [0]. Также позволительно
извлекать символы, начиная отсчет с конца. В этом случае отсчет
начинается с -1 (последний символ).
>>> tday_ru = 'утро, день, ночь'
>>> tday_ru[0]
'у'
>>> tday_ru[-1]
'ь'
>>> tday_ru[-3]
'о'
>>>
Очевидно, что удобнее работать не с самими строками, а с переменными,
которые на них ссылаются. Результат выполнения выражения индексирования
можно присвоить другой переменной.
>>> a = "very big string"
>>> a[6]
'i'
>>> b = a[0]
>>> b
'v'
>>>
Можно извлекать из строки не один символ, а несколько, т.е. получать срез (
подстроку).
Оператор извлечения среза из строки выглядит так: [X:Y]. X – это индекс
начала среза, а Y – его окончания; причем символ с номером Y в срез уже
не входит. Если отсутствует первый индекс, то срез берется от начала до
второго индекса; при отсутствии второго индекса, срез берется от
первого индекса до конца строки.
>>> tday = 'morning, afternoon, night'
>>> tday[0:7]
'morning'
>>> tday[9:-7]
'afternoon'
>>> tday[-5:]
'night'
>>>
Кроме того, можно извлекать символы не подряд, а через определенное
количество символов. В таком случае оператор индексирования выглядит
так: [X:Y:Z]; Z – это шаг, через который осуществляется выбор элементов.
>>> str4 = "Full Ball Fill Pack Ring"
>>> str4[::5]
'FBFPR'
>>> str4[0:15:2]
'Fl alFl '
>>>
Практическая работа
- Свяжите переменную с любой строкой, состоящей не менее чем из 8
символов. Извлеките из строки первый символ, затем последний, третий с
начала и третий с конца. Измерьте длину вашей строки.
- Присвойте произвольную строку длиной 10-15 символов переменной и извлеките из нее следующие срезы:
- первые восемь символов;
- четыре символа из центра строки;
- символы с индексами кратными трем.