Sobes.tech
Middle+
41

"""Γράψτε κώδικα που εξάγει συνδέσμους από ακατέργαστο κείμενο και τους ταξινομεί σύμφωνα με συγκεκριμένους κανόνες. Η λίστα συνδέσμων που θα επιστραφεί δεν πρέπει να περιέχει διπλότυπα. Οι κανόνες ταξινόμησης είναι οι εξής: - Προτεραιότητα 1: Πρώτα οι πρώτοι ανιχνευμένοι σύνδεσμοι σε ποσότητα self.first_extracted_links - Προτεραιότητα 2: Μετά, σύνδεσμοι σε cloud και έγγραφα (Yandex Disk κ.ά.) - Προτεραιότητα 3: Στη συνέχεια, σύνδεσμοι σε αρχεία (με επεκτάσεις .exe, .pdf, .rar κ.ά.) - Προτεραιότητα 4: Οι υπόλοιποι σύνδεσμοι ταξινομημένοι από μεγαλύτερο σε μικρό μήκος Επίσης, πρέπει να λαμβάνεται υπόψη ο περιορισμός στον αριθμό των συνδέσμων και να υλοποιείται διαχειριστής πλαισίου (context manager). Μπορείτε, για παράδειγμα, να το τρέξετε σε [link]. Συνοπτικά: - Δίνεται 30 λεπτά για την εκτέλεση - Γράψτε τις συναρτήσεις apply, process, συναρτήσεις για τον διαχειριστή πλαισίου - Όλες οι δοκιμές πρέπει να περάσουν - Οι δοκιμές δεν μπορούν να τροποποιηθούν - Μπορούν να χρησιμοποιηθούν εισαγωγές - Μετά τη συγγραφή, μπορείτε να το ελέγξετε τρέχοντας το τοπικά και να διορθώσετε αν χρειάζεται 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 # Λίστα τομέων που θεωρούνται cloud για τη δεύτερη συνθήκη self.clouds = clouds or self.DEFAULT_CLOUDS self._results = [] # Γράψτε αυτή τη μέθοδο, που προσθέτει μέρος του κειμένου για ανάλυση def apply(self, text) -> "LinkExtractor": ... return self

Εταιρείες όπου ρωτήθηκαν
АВ Софт