>>> letters = 'abcdefghijklmnopqrstuvwxyz'
>>> letters[0]
'a'
>>> letters[1]
'b'
>>> letters[-1]
'z'
>>> letters[-2]
'y'
>>> letters[25]
'z'
>>> letters[5]
'f'
Если вы укажете смещение, равное длине строки или больше (помните, смещения лежат в диапазоне от 0 до длины строки –1), сгенерируется исключение:
>>> letters[100]
Traceback (most recent call last):
··File "
IndexError: string index out of range
Индексирование работает и для других типов последовательностей (списков и кортежей), которые мы рассмотрим в главе 3.
Поскольку строки неизменяемы, вы не можете вставить символ непосредственно в строку или изменить символ по заданному индексу. Попробуем изменить слово Henny на слово Penny и посмотрим, что произойдет:
>>> name = 'Henny'
>>> name[0] = 'P'
Traceback (most recent call last):
··File "
TypeError: 'str' object does not support item assignment
Вместо этого вам придется использовать комбинацию строковых функций вроде replace() или slice (ее вы увидите совсем скоро):
>>> name = 'Henny'
>>> name.replace('H', 'P')
'Penny'
>>> 'P' + name[1:]
'Penny'
Извлекаем подстроки с помощью оператора [
Из строки можно извлечь
• Оператор [: ] извлекает всю последовательность от начала до конца.
• Оператор [
• Оператор [:
• Оператор [
• Оператор [
Как и ранее, смещение слева направо определяется как 0, 1 и т. д., а справа налево — как -1, -2 и т. д. Если вы не укажете смещение
Создадим строку, содержащую английские буквы в нижнем регистре:
>>> letters = 'abcdefghijklmnopqrstuvwxyz'
Использование простого двоеточия аналогично использованию последовательности 0: (целая строка):
>>> letters[: ]
'abcdefghijklmnopqrstuvwxyz'
Вот так можно получить все символы, начиная с 20-го и заканчивая последним:
>>> letters[20:]
'uvwxyz'
А теперь — начиная с 10-го и заканчивая последним:
>>> letters[10:]
'klmnopqrstuvwxyz'
А теперь получим символы с 12-го по 14-й (Python не включает символ, расположенный под номером, который указан последним):
>>> letters[12:15]
'mno'
Последние три символа:
>>> letters[-3:]
'xyz'
В следующем примере мы начинаем со смещения 18 и идем до четвертого с конца символа. Обратите внимание на разницу с предыдущим примером, где старт с позиции -3 получал символ х. В этом примере конец диапазона -3 означает, что последним будет символ по адресу -4 — w:
>>> letters[18:-3]
'stuvw'
В следующем примере мы получаем символы, начиная с шестого с конца и заканчивая третьим с конца:
>>> letters[-6:-2]
'uvwx'
Если вы хотите увеличить шаг, укажите его после второго двоеточия, как показано в нескольких следующих примерах.
Каждый седьмой символ с начала до конца:
>>> letters[::7]
'ahov'
Каждый третий символ, начиная со смещения 4 и заканчивая 19-м символом:
>>> letters[4:20:3]
'ehknqt'
Каждый четвертый символ, начиная с 19-го:
>>> letters[19::4]
'tx'
Каждый пятый символ от начала до 20-го:
>>> letters[:21:5]
'afkpu'
Опять же значение