Sobes.tech
Middle+

"""Írjon kódot, amely kinyeri a linkeket a nyers szövegből, és azokat meghatározott szabályok szerint rendezi. A visszaadott linklista nem tartalmazhat duplikátumokat. A rendezési szabályok a következők: - Elsőbbség 1: Először az elsőként észlelt linkek a self.first_extracted_links mennyiségében - Elsőbbség 2: Ezután a felhőalapú meghajtók és dokumentumok linkjei (Yandex Disk stb.) - Elsőbbség 3: Ezután a fájlokra mutató linkek (amelyek végén .exe, .pdf, .rar stb. kiterjesztés van) - Elsőbbség 4: A többi link, hosszúság szerint csökkenő sorrendben Emellett figyelembe kell venni a linkek számának korlátozását, és implementálni kell egy kontextuskezelőt. Például futtatható a [link]-en. Összefoglalva: - 30 perc áll rendelkezésre a végrehajtáshoz - Írjon apply, process függvényeket, valamint a kontextuskezelő függvényeit - Minden tesztnek sikeresen kell lefutnia - A teszteket nem lehet módosítani - Használhat importokat - A kód megírása után helyben futtatva ellenőrizheti, és szükség esetén javíthatja linkek keresésére 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" )) # Ezt a metódust bővítheti vagy átírhatja def __init__(self, max_links: int = 7, first_extracted_links: int = 2, clouds = None): # Maximális linkek száma, amit vissza kell adni self.max_links = max_links # Az első feltételhez kivont linkek száma self.first_extracted_links = first_extracted_links # A felhőként elfogadott domainek listája self.clouds = clouds or self.DEFAULT_CLOUDS self._results = [] # Írja meg ezt a metódust, amely hozzáad egy részt a szövegből, amit később elemezni kell def apply(self, text) -> "LinkExtractor": ... return self