Простой Python. Современный стиль программирования (Любанович) - страница 28

>··File "", line 1, in

>IndexError: string index out of range

Индексирование работает и для других типов последовательностей (списков и кортежей), которые мы рассмотрим в главе 3.

Поскольку строки неизменяемы, вы не можете вставить символ непосредственно в строку или изменить символ по заданному индексу. Попробуем изменить слово Henny на слово Penny и посмотрим, что произойдет:

>>>> name = 'Henny'

>>>> name[0] = 'P'

>Traceback (most recent call last):

>··File "", line 1, in

>TypeError: 'str' object does not support item assignment

Вместо этого вам придется использовать комбинацию строковых функций вроде replace() или slice (ее вы увидите совсем скоро):

>>>> name = 'Henny'

>>>> name.replace('H', 'P')

>'Penny'

>>>> 'P' + name[1:]

>'Penny'

Извлекаем подстроки с помощью оператора [start: end: step]

Из строки можно извлечь подстроку (часть строки) с помощью функции slice. Вы определяете slice с помощью квадратных скобок, смещения начала подстроки start и конца подстроки end, а также опционального размера шага step. Некоторые из этих параметров могут быть исключены. В подстроку будут включены символы, расположенные начиная с точки, на которую указывает смещение start, и заканчивая точкой, на которую указывает смещение end.

• Оператор [: ] извлекает всю последовательность от начала до конца.

• Оператор [start: ] извлекает последовательность с точки, на которую указывает смещение start, до конца.

• Оператор [: end] извлекает последовательность от начала до точки, на которую указывает смещение end минус 1.

• Оператор [start: end] извлекает последовательность с точки, на которую указывает смещение start, до точки, на которую указывает смещение end минус 1.

• Оператор [start: end: step] извлекает последовательность с точки, на которую указывает смещение start, до точки, на которую указывает смещение end минус 1, опуская символы, чье смещение внутри подстроки кратно step.

Как и ранее, смещение слева направо определяется как 0, 1 и т. д., а справа налево — как -1, -2 и т. д. Если вы не укажете смещение start, функция будет использовать в качестве его значения 0 (начало строки). Если вы не укажете смещение end, функция будет использовать конец строки.

Создадим строку, содержащую английские буквы в нижнем регистре:

>>>> letters = 'abcdefghijklmnopqrstuvwxyz'

Использование простого двоеточия аналогично использованию последовательности 0: (целая строка):

>>>> letters[: ]

>'abcdefghijklmnopqrstuvwxyz'

Вот так можно получить все символы, начиная с 20-го и заканчивая последним:

>>>> letters[20:]