В моём проекте по анализу данных мне нужно было разбить строки на части, а именно извлечь доменные части URL-адресов из набора данных. Для этого я применил метод нарезки, используя оператор нарезки в Python.
Нарезка строк — это процесс извлечения подстроки из исходной строки. В Python есть два способа выполнить нарезку: с помощью оператора нарезки, который обозначается двоеточием внутри квадратных скобок, или с помощью функции slicing().
Этот метод широко используется в области анализа и обработки данных. Давайте рассмотрим, как выполнить нарезку строк в Python.
С использованием оператора нарезки
Как я уже говорил, вы можете разрезать строку, используя двоеточие ‘:’ в квадратных скобках[]. Полный синтаксис приведен ниже.
str[start:stop:step]
Где:
- start: Начальный индекс, с которого начинается срез. Символ, с которого начинается нарезка. Если этот параметр опущен, то по умолчанию нарезка начинается с начала.
- stop: конечный индекс, где останавливается срез. Это персонаж, на котором нарезка заканчивается. Но этот символ не включается в операцию нарезки.
- step: это необязательный аргумент, определяющий приращение между каждым индексом для нарезки.
Теперь вы знакомы с операторами среза; Возьмем простой пример, где у вас есть строка «Я живу в Соединенных Штатах».
str = 'I live in the United States'
Предположим, вы хотите выделить или удалить часть строки «Я живу». Сначала вам нужно подсчитать количество символов, включая пробелы (рассматривайте пробел как символ), в той части строки, которую вы хотите выделить. В данном случае это 6 символов.
Важно помнить, что отсчёт индексов начинается с нуля. Это означает, что первый символ в строке имеет индекс 0, второй — индекс 1 и так далее.
В слове «Я живу» шесть символов, поэтому индексы будут изменяться от 0 до 5. Однако если вы хотите получить полную подстроку «Я живу», вам нужно указать индексы от 0 до 6.
Например, чтобы получить подстроку «Я живу» из строки, вы можете использовать следующий код:
print(str[0:6])
Посмотрите на результат. Программа успешно извлекла подстроку «Я живу», используя индексы от 0 до 6.
Код выше начинает нарезку с 0-го индекса и доходит до 6-го. Можно было бы записать это и так.
print(str[:6])
Итак, и str[0:6], и str[:6] содержат одинаковое начало с индекса 0. Теперь вы хотите получить подстроку «жизнь», начиная с определённого индекса.
В этом случае вам нужно указать начальный индекс 3. В строке «Я живу» один символ — это буква «Я», а второй — пробел после неё.
В строке «I live in the United States» буква «l» в слове «live» находится в индексе 2. Поэтому, чтобы извлечь слово «life», мы должны указать индексы от 2 до 6.
print(str[2:6])
И снова он извлёк то, что нужно, — слово «жизнь». Вот как вы можете использовать начальный и конечный параметры с двоеточием, чтобы разрезать строку на определённые части.
Но есть ещё один параметр — «шаг». Шаг определяет размер нарезки. Если вы установите шаг равным 2, то он будет начинаться с индекса 0, пропускать символ с индексом 1, брать символ с индексом 2, снова пропускать символ с индексом 3 и так далее.
В целом, все шаги — это количество символов, которые вы хотите пропустить при разрезании строки. Пропущенный символ не будет включён в окончательную подстроку.
Например, вы хотите снова извлечь подстроку «Живу», но пропустить один символ. Чтобы понять это, выполните следующий код:
print(str[0:6:2])
Обратите внимание, что индексация начинается с нуля, поэтому буква «Я» имеет индекс 0. Затем мы пропускаем символ с индексом 1 (пробел), переходим к индексу 2, чтобы включить букву «l», пропускаем индекс 3 (букву «i»), включаем индекс 4 (букву «v») и, наконец, пропускаем индекс 5 (букву «е»).
Из вывода видно, что мы получили строку «Ilv». Если вам интересно узнать больше, поиграйтесь с параметрами: начало, конец и шаг. Так вы лучше поймёте, как работает операция нарезки.
Вы проделали большую работу, чтобы научиться выполнять разрезы строк с помощью двоеточия «:», находящегося внутри квадратных скобок. Но за ваш труд есть награда: вы можете указать отрицательный индекс, чтобы извлекать подстроки в обратном направлении от конца строки.
Это означает, что если вы хотите начать обрезку с конца строки, вы можете указать отрицательный индекс, например -4, который извлечёт последние четыре символа строки.
Давайте рассмотрим пример с городами в США. Нам нужны только три последних символа строки Python.
city = 'Los Angeles' last_three_letters = city[-3:] print("Last Three Letters:", last_three_letters)
Посмотрите на результат. Вы упомянули параметр start, чтобы строка среза содержала символ с этим индексным номером, и не упомянули параметр stop, чтобы он доходил до конца строки Python.
С использованием функции Slicing()
В Python функция slicing() работает как оператор среза, с которым вы познакомились в предыдущем разделе. Единственное отличие заключается в том, что slicing() — это функция, которая принимает те же параметры, что и оператор среза.
Синтаксис приведен ниже.
slice(start, end, step)
Где параметры функции:
- start: это начальный индекс части среза.
- end: это конечный индекс части среза, но он не включен в часть среза.
- step: размер шага определяет количество индексов, которые необходимо пропустить между каждым индексом.
Например, предположим, у вас есть список имён «даты», в котором даты записаны в формате «ГГГГММДД». Вам нужно извлечь из каждой даты только день и год.
Посмотрите на код ниже и запустите его.
dates = ["20240101", "20241225", "20241111"] year_slice = slice(0, 4) day_slice = slice(6, 8) for date in dates: year = date[year_slice] day = date[day_slice] print(f"Year: {year}, Day: {day}")
Функция среза() извлекает из даты год и день. Давайте рассмотрим часть кода «year_slice = срез(0, 4) и day_slice = срез(6, 8)».
Создадим два объекта среза, используя разные индексы начала и конца. Первый объект среза будет иметь индекс от 0 до 4, не включая индекс 4 (фактически от 0 до 3). Второй объект среза будет иметь индекс от 6 до 8, но фактический индекс будет от 6 до 7.
Затем запустим цикл, который будет выполняться для каждой даты в списке. Количество итераций в цикле будет равно количеству дат в списке. Для каждой даты мы будем использовать объекты year_slice и day_slice в качестве индексов, чтобы извлечь год и день этой даты.
Таким образом, он вырезает часть года и дня каждой даты в списке и печатает ее с помощью ‘print(f”Year: {year}, Day: {day}”)’.