>··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:]