Salut les mecs,

Je travaille sur l'implémentation d'une intellicence pour le 6pad++ et 
rencontre un problème avec la gestion des chaînes de caractères par la classe 
str.

Ayant récupéré et placé les mots clés à proposer dans un objet de type liste, 
je cherche à par tir  des premières lettres d'un mot clé tapé sous le curseur à 
déterminer quelle expression de la liste est la plus proche.

Mon procédé est d'abord de mettre toutes les valeurs en minuscule avant de 
faire les comparaisons.

Mais quand je teste les valeurs après les instructions de mise en minuscule, 
pas de changement de la cass. Des expressions sensées être en minuscule 
contiennent toujours des majuscules.

Ca me casse la tête depuis ce matin.

Je vous colle la fonction en question ci-dessous:

Début du code python

def getListNierestExpression(lst, expression):
 # renvoi la position de l'expression la plus proche contenue dans la liste 
ordonnée de manière croissante
 if expression=="": return 0
 n=len(expression)
 #  élimination de la cass
 e=""
 i=0
 while(i<n-1):
  e=lst[i]
  e=e.lower()
  lst[i]=e
  i=i+1
 # end while
 sp.window.alert(str(lst))
 #
 expression=expression.lower()
 s=""
 pos=0
 selec=0
 flag=False
 # pour chaque lettres de l'expression
 for i in range(0, n-1):
  s=expression[0: i+1].lower()
  for j in range(pos, len(lst)-1):
   if lst[j].startswith(s):
    flag=True
    selec=j
    if i>=n-1: return selec
    pos=j+1
    break
   # end if
  # end for
 # end for
 return selec
# end def

Fin du code python

Quelqu'un pourrait-il expliquer le phénomène et avoir une solution ?

Merci!

Yannick Daniel Youalé
La programmation est une religion. Aimez-la, ou quittez-la.
www.visuweb.net




Répondre à