Sobes.tech
Middle+
45

"""Escriba un código que extraiga enlaces del texto sin procesar y los ordene según reglas específicas. La lista de enlaces que se devolverá no debe contener duplicados. Las reglas de ordenación son las siguientes: - Prioridad 1: Primero los primeros enlaces detectados en cantidad de self.first_extracted_links - Prioridad 2: Luego enlaces a discos en la nube y documentos (Yandex Disk, etc.) - Prioridad 3: Después enlaces a archivos (que tengan extensiones .exe, .pdf, .rar, etc. al final de la ruta) - Prioridad 4: Los enlaces restantes ordenados de mayor a menor longitud de cadena También se debe considerar la limitación en la cantidad de enlaces y la implementación de un gestor de contexto. Se puede ejecutar, por ejemplo, en [link] En resumen: - Se da 30 minutos para la ejecución - Escribir funciones apply, process, funciones para el gestor de contexto - Todas las pruebas deben completarse - No se pueden modificar las pruebas - Se pueden usar importaciones - Después de escribir, se puede verificar ejecutando localmente y corregir si es necesario regex para buscar enlaces: (?: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" )) # Puede ampliar este método o reescribirlo def __init__(self, max_links: int = 7, first_extracted_links: int = 2, clouds = None): # Número máximo de enlaces que se devolverán en la lista self.max_links = max_links # Cantidad de enlaces que se extraen para la primera condición self.first_extracted_links = first_extracted_links # Lista de dominios considerados en la nube para la segunda condición self.clouds = clouds or self.DEFAULT_CLOUDS self._results = [] # Escribir este método, que añade parte del texto para analizar después def apply(self, text) -> "LinkExtractor": ... return self

Empresas donde se preguntó
АВ Софт