• Оператор [: 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:]
'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'
Опять же значение end должно быть на единицу больше, чем реальное смещение.
И это еще не все! Если задать отрицательный шаг, любезный Python будет двигаться в обратную сторону. В следующем примере движение начинается с конца и заканчивается в начале, ни один символ не пропущен:
>>> letters[-1::-1]
'zyxwvutsrqponmlkjihgfedcba'
Оказывается, можно добиться того же результата, использовав такой пример:
>>> letters[::-1]
'zyxwvutsrqponmlkjihgfedcba'
Операция slice более мягко относится к неправильным смещениям, чем поиск по индексу. Если указать смещение меньшее, чем начало строки, оно будет обрабатываться как 0, а если указать смещение большее, чем конец строки, оно будет обработано как –1. Это показано в следующих примерах.
Начиная с –50-го символа и до конца:
>>> letters[-50:]
'abcdefghijklmnopqrstuvwxyz'
Начиная с –51-го символа и заканчивая –50-м:
>>> letters[-51:-50]
''
От начала до 69-го символа:
>>> letters[:70]
'abcdefghijklmnopqrstuvwxyz'
Начиная с 70-го символа и заканчивая 70-м:
>>> letters[70:71]
''
Получаем длину строки с помощью функции len()
До этого момента мы использовали специальные знаки препинания вроде +, чтобы манипулировать строками. Но существует не так уж много подобных функций. Теперь мы начнем использовать некоторые встроенные функции Python: именованные фрагменты кода, которые выполняют определенные операции.
Функция len() подсчитывает символы в строке:
>>> len(letters)
26
>>> empty = ""
>>> len(empty)
0
Вы можете использовать функцию len() и для других типов последовательностей, что показано в главе 3.
Разделяем строку с помощью функции split()
В отличие от функции len() некоторые функции характерны только для строк. Для того чтобы использовать строковую функцию, введите имя строки, точку, имя функции и аргументы, которые нужны функции: строка. функция(аргументы). Более подробно о функциях мы будем говорить в разделе «Функции» главы 4.