DamiRocK

Python: срезы строк, шаг и выделение домена

Используем строка[начало:конец:шаг], открытые границы и обратный порядок. Удаляем известный префикс https:// срезом, не выдавая это за универсальный разбор URL.

Начало входит, конец не входит

Срез text[start:stop] возвращает подстроку от индекса start до stop, не включая stop. Например, "12-08-2034"[6:10] даёт "2034". Результат остаётся строкой, даже если состоит только из цифр.

Пропущенное начало означает начало строки, пропущенный конец — её конец. Поэтому "Hexlet"[:3] равно "Hex", а "Hexlet"[3:]"let".

Задание источника

Из известного адреса https://hexlet.io извлеките hexlet.io:

url = "https://hexlet.io"
print(url[8:])

Префикс https:// занимает восемь позиций, поэтому нужная часть начинается с индекса 8. Для этих исходных данных решение точное. Оно не является универсальным парсером адресов: при другом протоколе, пути или параметрах фиксированный срез может вернуть не только домен.

Шаг и обратный порядок

Третий параметр задаёт шаг:

value = "Hexlet"
print(value[1:5:2])  # el
print(value[::2])    # Hxe
print(value[::-1])   # telxeH
print(value[4:1:-1]) # elx

При отрицательном шаге движение идёт справа налево. Конечная граница по-прежнему не включается. Шаг ноль недопустим и вызывает ValueError.

Срез и одиночный индекс

Срез за пределами длины обычно ограничивается доступными границами: "abc"[1:100] возвращает "bc". Одиночный доступ "abc"[100], напротив, вызывает ошибку. Не нужно переносить поведение одного механизма на другой.

Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Упражнение сохранено; ограничения применения дополнены.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.