Validation de caractères dans une chaine

Résolu
Goth25 Messages postés 75 Date d'inscription samedi 26 juillet 2003 Statut Membre Dernière intervention 21 mai 2014 - 5 oct. 2013 à 23:24
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 6 oct. 2013 à 03:50
Bonjour,

par cette ligne de code :

if ValideVar[0:2] != "pp" and ValideVar[-1:-3] != "pp":

je tente de valider que les 2 premier caractère ET que les 2 derniers sont différent de "p".

Donc voici ce qui passerais ou ne passerais pas :

Exemple :
- Chaine = fruits -ok passe sans validation
- Chaine = ppfruitspp -C'est ce que je dois valider
- Chaine = pfruitspp -ok passe sans validation

- Présentement, lorsque j'ai ceci comme chaine à valider : opp, (la fin oui c'est "pp" mais pas le début) il me valide alors qu'il ne devrait pas....

Vous avez une idée de la bonne syntaxe ? ou ce que je fais pas de pas correct ?

Merci à vous

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
6 oct. 2013 à 02:19
Bonjour,
je ne dev pas en Python, toutesfois pour traiter ta question je t'inviterai à regarder du côté des expressions régulières.
Celle qui devrait te correspondre serait : ^pp*.*pp$

Explications expressions régulières :
http://www.tutorialspoint.com/python/python_reg_expressions.htm

Site pour tester :
https://pythex.org/


1
Goth25 Messages postés 75 Date d'inscription samedi 26 juillet 2003 Statut Membre Dernière intervention 21 mai 2014
Modifié par Goth25 le 6/10/2013 à 02:35
Merci à toi, les liens que tu m'a donné je vais les utiliser assez régulièrement. C'est très intéressant.

J'ai résolu le problème, en faite étant donné que j'était dans la négation, je devais utiliser un or au lieu du and.

Voici apres correction si jamais sa peut être utile a quelqu'un :
if ValideVar[0:2] != "pp" or ValideVar[-2:] != "pp":
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
6 oct. 2013 à 03:50
pas sur qu'avec un OR tu règles ton souci...
Si je lis ce que signifie ta ligne de code...
Si ValidVar[0:2] n'est pas égale à "PP" OU que ValidVar[-2:] n'est pas égale à PP alors... ce qui veut dire que si ton mot Ne commence pas ou ne finit pas par PP..la condition sera vérifiée...
Donc : ppfruitspp sera validé ok.. mais aussi
ppfruitsddf, fruitspp ... etc..

tu as testé avec le AND maintenant que tu as trouvé la syntaxe correcte pour avoir la fin de ta chaine ?
if ValideVar[0:2] != "pp" and ValideVar[-2:] != "pp":
0
Rejoignez-nous