IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Déduction de similaritées


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 132
    Par défaut Déduction de similaritées
    Je parse des URL.
    Ce que j'aimerai faire, ça serait pouvoir déduire les similarités des adresses.
    Par exemple j'ai :
    J'aimerai pouvoir en déduire que l'adresse de base de ces fichiers est :
    http://www.blabla.com/dossier/unautre/

    Bien sur j'ai déjà une idée pour arriver à ce résultat, mais je me demandais s'il existait pas déjà des fonctions, ou autre, tout prête.
    Sinon, je pourrai toujours utiliser une boucle, et continuer tant que les caratères sont identiques...

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Si dans ton exemple, au lieu de "monfichier.exp", tu avais "unfichier.exp", tu voudrais que le résultat soit: http://www.blabla.com/dossier/unautre/un ? J'en doute car cet URL ne pointerait sans doute sur rien d'existant.

    Si tu ne veux pas ça, il faut découper suivant les / et tester morceau par morceau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def common(u1,u2):
        r = []
        for e1,e2 in zip(u1.split('/'),u2.split('/')):
            if e1 == e2:
                r.append(e1)
            else:
                break
        return '/'.join(r)
    Ou plus court, mais moins facile à comprendre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from itertools import takewhile
    def common(u1,u2):
        return '/'.join(zip(*takewhile(lambda x: x[0]==x[1], zip(u1.split('/'),u2.split('/'))))[0])

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Bonjour,

    une autre solution serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import difflib
    a=difflib.SequenceMatcher()
    a.set_seqs("http://www.blabla.com/dossier/unautre/monfichier.exp","http://www.blabla.com/dossier/unautr...trefichier.ext")
    a.get_matching_blocks()[0]
    pas nécessairement plus court... mais utile a connaitre.

Discussions similaires

  1. transformée ondelette et calcul de similarité
    Par anibal dans le forum Traitement du signal
    Réponses: 53
    Dernier message: 31/10/2007, 18h48
  2. Déduction fiscale pour les informaticiens ?
    Par byloute dans le forum Contrat
    Réponses: 3
    Dernier message: 03/05/2007, 10h51
  3. Réponses: 3
    Dernier message: 10/04/2007, 14h41
  4. [RegEx] recherche par similarité
    Par kenji33 dans le forum Langage
    Réponses: 1
    Dernier message: 23/01/2007, 14h49
  5. Réponses: 1
    Dernier message: 27/06/2006, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo