Middle+
42
"""Мәтіннен сілтемелерді шығарып, белгілі бір ережелер бойынша сұрыптайтын код жазыңыз. Қайтарылатын сілтемелер тізімінде қайталанулар болмауы керек. Сұрыптау ережелері келесідей: - Бірінші орын: алғашқы табылған сілтемелер, оларды self.first_extracted_links саны бойынша сұрыптау - Екінші орын: бұлттық дискілер мен құжаттарға сілтемелер (Яндекс Диск және т.б.) - Үшінші орын: файлдарға сілтемелер (жол соңында .exe, .pdf, .rar және т.б. кеңейтімдері бар) - Төртінші орын: қалған сілтемелер ұзындығы бойынша кішіден үлкенге сұрыпталған Сонымен қатар, сілтемелер санына шектеу қою керек және контекстік менеджерді жүзеге асыру керек. Мысалы, [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
Сұралған компаниялар
АВ Софт