Шаг 25.
Однострочники Python.
Трюки Python. Извлечение окружения вхождений подстрок с помощью срезов

    На этом шаге мы узнаете о важности понятия среза (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(значение) для поиска индекса строкового аргумента значение в заданной строке.

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг