Fonction pour rechercher un nom précis dans une liste
Salut,
J'aimerais pouvoir trouver le mot exacte dans un fichier .
Je trouve le mot en faisant la recherche, mais je n'ai pas seulement le résultat du mot exacte entré dans la fonction textEntry.
Voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| def search(self, evt):
#nmf est nom de mon fichier
nmf = 'dico.rob'
#db est un variable quelconque, don le nom de mon fichier et un paramètre r pour read
db = file(nmf,'r')
#Db.readlines pour lire tous les lignes. A ne pas oublier le s a la fin de line
liste = db.readlines()
#Db.close veut dire fermer le fichier.
db.close()
n = wx.TextEntryDialog(self,"Entrez le mot ici","",style = wx.OK | wx.CANCEL | wx.CENTRE)
#afficher la fenêtre tant et aussi longtemps que l'on ne la fermera pas
reponse = n.ShowModal()
#Récupération du text entré
nn = n.GetValue()
nn = nn.lower()
if reponse != wx.ID_OK or n == "":
#if (reponse != wx.ID_CANCEL) :
winsound.PlaySound('test.wav', winsound.SND_NODEFAULT)
return
elif (len(nn) <= 2) : # pas de recherche pour moins de 3 lettres
return
#db.close()
#recuperation du nombre en string
for i in liste:
#On remplace la ligne encodelatin par celle-ci avec la nouvelle version de wx.
if i.find(nn) <>-1:
#if i.find(nn.encode("latin-1")) <> -1:
winsound.PlaySound('wav/bing.wav', winsound.SND_NODEFAULT)
n = wx.MessageDialog(self, "le résultat est: "+i,"", wx.OK | wx.CANCEL | wx.CENTRE)
n.ShowModal()
n.Destroy() |
Merci bien, c'est apprécié!
Citation:
Envoyé par
mont29
Salut,
Pour le module d’expressions régulières re, il est tout simplement inclus par défaut dans Python – donc suffit de faire un
dans n’importe quel programme python pour pouvoir l’utiliser (la syntaxe est assez proche des regex de Perl ou PHP, de toute façon, il est très bien documenté dans la doc officielle de Python –
pour python 2.6 et
pour python 3.1).
À mon avis, surtout si le dico est assez gros, les regex devraient être beaucoup plus performantes ;)
Bastien
PS: désolé pour le retard…