Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Général Python
Général Python Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/01/2013, 10h00   #1
kiby56
Invité régulier
 
Inscription : août 2008
Messages : 36
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 36
Points : 5
Points : 5
Par défaut recherche dans des strings

Bonjour,

Je cherche à faire une recherche dans une list de string. Mais je voudrai trouver une fonction qui ne fait une simple recherche (genre string.find("bibi") ) mais un truc plus évolué. Par exemple :
1: algorithme
2: algorithmé
3: _algo_rithme

Comment faire pour qu'il trouve les trois ? Dans google par exemple, si on a un caractère de pas bon il propose quand même la bonne réponse.

Merci
kiby56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 12h15   #2
tyrtamos
Expert Confirmé
 
Avatar de tyrtamos
 
Inscription : décembre 2007
Messages : 1 777
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 777
Points : 3 049
Points : 3 049
Bonjour,

On peut utiliser le module difflib:

Code :
1
2
3
4
5
6
7
8
9
10
from difflib import SequenceMatcher
 
def simil(mot1, mot2, ratio):
    return SequenceMatcher(None, mot1, mot2).ratio() >= ratio
 
liste = ["toto", "algorithme", "albert", "algorithmé", "dupont", "_algo_rithme"]
 
for mot in liste:
    if simil("algorithme", mot, 0.7):
        print mot
Résultat:

Code :
1
2
3
algorithme
algorithmé
_algo_rithme
Il faut, bien sûr, adapter le ratio à ce qu'on veut trouver, et on peut aussi neutraliser la casse (majuscule/minuscule) avant de faire la comparaison.

J'utilise cela souvent pour trouver des noms qui auraient été écrits avec des erreurs de saisie dans une base de données.
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
Mes recettes python: http://www.jpvweb.com
tyrtamos est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 12h32   #3
kiby56
Invité régulier
 
Inscription : août 2008
Messages : 36
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 36
Points : 5
Points : 5
Mais c'est juste génial ce truc !!

Merci !!!!!!!!!
kiby56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 13h38   #4
Drawingrom
Membre éclairé
 
Inscription : mai 2006
Messages : 258
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 258
Points : 348
Points : 348
Citation:
Envoyé par kiby56 Voir le message
Mais c'est juste génial ce truc !!

Merci !!!!!!!!!
+1, merci pour l'info tyrtamos.
Drawingrom est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h18.


 
 
 
 
Partenaires

Hébergement Web