Middle+
30
"""Napište kód, který extrahuje odkazy z nezpracovaného textu a seřadí je podle určitých pravidel. Seznam odkazů, který bude vrácen, by neměl obsahovat duplicity. Pravidla řazení jsou následující: - Priorita 1: Nejprve první nalezené odkazy v množství self.first_extracted_links - Priorita 2: Poté odkazy na cloudové disky a dokumenty (Yandex Disk atd.) - Priorita 3: Následně odkazy na soubory (s příponami .exe, .pdf, .rar atd.) - Priorita 4: Zbývající odkazy seřazené od delšího po kratší řetězec Je třeba také vzít v úvahu omezení počtu odkazů a implementovat kontextový manažer. Například lze spustit v [link]. Shrnutí: - Na provedení je dáno 30 minut - Napsat funkce apply, process, funkce pro kontextový manažer - Všechny testy musí projít - Testy nelze upravovat - Lze použít importy - Po napsání lze zkontrolovat spuštěním lokálně a případně opravit regex pro hledání odkazů: (?: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" )) # Tuto metodu lze rozšířit nebo přepsat def __init__(self, max_links: int = 7, first_extracted_links: int = 2, clouds = None): # Maximální počet odkazů, které se mají vrátit self.max_links = max_links # Počet odkazů extrahovaných pro první podmínku self.first_extracted_links = first_extracted_links # Seznam domén považovaných za cloud pro druhou podmínku self.clouds = clouds or self.DEFAULT_CLOUDS self._results = [] # Napsat tuto metodu, která přidá část textu k analýze def apply(self, text) -> "LinkExtractor": ... return self
Společnosti byly požádány
АВ Софт