Sobes.tech
Middle+
4

"""Напишите код который выполняет извлечение ссылок из сырого текста и сортирует их по определённым правилам. Список ссылок который будет возвращаться не должен содержать дубликаты Правила сортировки следующие: - Приоритет 1: Сначала идут первые обнаруженные ссылки в количестве self.first_extracted_links - Приоритет 2: Потом идут ссылки на облачные диски и документы (Яндекс Диск и т.д.) - Приоритет 3: Потом ссылки на файлы (в конце пути имеют расширения .exe, .pdf, .rar и так далее) - Приоритет 4: Здесь оставшиеся ссылки отсортированные от большей к меньшей по длине строки Так же надо учитывать ограничение на количество ссылок и реализовать контекстный менеджер Запустить можно например в [link] Итого: - На выполнение даётся 30 минут - Написать функции apply, process, функции для контекстного менеджера - Все тесты должны доходить до конца - Тесты модифицировать нельзя - Можно использовать import'ы - После написания можно проверить запустив локально, если что то не так, то исправить на этой странице regex для поиска ссылок: (?:https?|ftp):\/\/(?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(?::\d+)?(?:\/[^\s()]*)? """ class LinkExtractor: DEFAULT_CLOUDS = frozenset(( "drive.google.com", "mediafire.com", "yadi.sk", "disk.yandex.ru", "cloud.mail.ru", "mega.nz" )) # Можно расширить этот метод или переписать его def __init__(self, max_links: int = 7, first_extracted_links: int = 2, clouds = None): # Максимальное количество ссылок возвращаемых в массиве self.max_links = max_links # Количество ссылок которое извлекается для первого условия self.first_extracted_links = first_extracted_links # Список доменов которые считаются облаками для второго условия self.clouds = clouds or self.DEFAULT_CLOUDS self._results = [] # Написать этот метод, добавляет часть текста который позже надо анализировать def apply(self, text) -> "LinkExtractor": ... return self

Companies where asked
АВ Софт