На этом шаге мы узнаете о важности понятия среза (slicing) - процесса "вырезания" подпоследовательности из
исходной полной последовательности - для обработки простых текстовых запросов. Мы поищем в каком- нибудь тексте конкретную
строку символов, а затем выделим ее из текста вместе с некоторым количеством окружающих ее символов в качестве контекста.
Срезы играют очень важную роль во множестве понятий и навыков, связанных с Python, как простых, так и продвинутых, например, при использовании любых встроенных структур данных Python - списков, кортежей и строк. Срезы также лежат в основе большого количества продвинутых библиотек Python, например NumPy, Pandas, TensorFlow и scikit-learn. Доскональное изучение срезов окажет эффект домино (в положительном смысле) на вашей карьере как Python-разработчика.
Срезы позволяют извлекать из последовательностей подпоследовательности, например части символьных строк. Синтаксис очевиден. Пусть дана переменная х, ссылающаяся на строковое значение, список или кортеж. Извлечь из нее подпоследовательность можно с помощью следующей нотации:
х[начало:конец:шаг]
Полученная в результате подпоследовательность начинается на индексе начало (включительно) и заканчивается на индексе конец (не включая его). При желании можно включить необязательный третий аргумент шаг, определяющий, какие элементы извлекаются, позволяя выбрать только расположенные через шаг элементы последовательности. Например, применение к переменной х = 'hello world' операции среза х[1:4:1] дает в результате строку 'ell'. А операция среза х[1:4:2] для той же переменной дает строку 'el', поскольку в итоговый срез выбирается только каждый второй элемент. Как вы помните, первому элементу последовательности любого типа, например, строки или списка, в языке Python соответствует индекс 0.
Если не включить аргумент шаг, то Python по умолчанию считает его равным 1. Например, срез х[1:4] дает в результате строку 'ell'.
Если опустить аргументы начало или конец, то Python предполагает, что вы хотите начать с начала или закончить в конце последовательности. Например, срез х[:4] дает строку 'hell', а срез х[4:] - строку 'o world'.
Внимательно посмотрите на следующие примеры, чтобы лучше разобраться в этой функциональности.
s = 'Eat more fruits!' print(s[0:3]) # Eat (1) print(s[3:0]) # (empty string '') print(s[:5]) # Eat m print(s[5:]) # ore fruits! (2) print(s[:100]) # Eat more fruits! print(s[4:8:2]) # mr (3) print(s[::3]) # E rfi! (4) print(s[::-1]) # !stiurf erom taE print(s[6:1:-1]) # rom t
Эти варианты простейшего шаблона срезов Python x[начало:конец:шаг] демонстрируют множество интересных свойств данной методики:
Далее мы воспользуемся срезами и методом string.find(значение) для поиска индекса строкового аргумента значение в заданной строке.
На следующем шаге мы закончим изучение этого вопроса.