begin process at 2012 05 25 07:05:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Python

 > 

Divers

 > 

Débutant(e)

 > 

Test sur le "format" d'une chaine de caractères


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Test sur le "format" d'une chaine de caractères

samedi 27 février 2010 à 01:41:06 | Test sur le "format" d'une chaine de caractères

arkwonn

Bonjour.

Souhaitant personnaliser un script python, ce que je voudrais coder est un "test de format d'une chaine de caractères".
Concrètement, je souhaite vérifier si une chaine de caractère est au format d'une clé WEP 64 ou 128 bits, càd selon les schémas suivant:
XXXXXXXXXX
XX:XX:XX:XX:XX
XXXXXXXXXXXXXXXXXXXXXXXXXX
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

De plus les caractères (X) ne peuvent être que:
0;1;2;3;4;5;6;7;8;9;A;B;C;D;E;F

N'ayant que des bases et de faibles notions en python, ceci me restreint à le faire avec une suite de if, et verifier la correspondance de chaque caractère...
Ceci etant fastidieux, très long et épuisant, je me demandais s'il etait possible de réaliser cela avec le moins de lignes de codes possible.
Merci de votre réponse
lundi 1 mars 2010 à 22:20:51 | Re : Test sur le "format" d'une chaine de caractères

lespinx

Réponse acceptée !
Bonsoir,

Ci-joint une proposition pour tenter de répondre au problème posé.

Je propose de faire 3 contrôles:

    Un contrôle de longueur de chaines
    Un contrôle de validité des caractères
    Un contrôle de format

Code Python :
# -*- coding: ISO-8859-15 -*-
import sys

#"XXXXXXXXXX"                               Longueur = 10
#"XX:XX:XX:XX:XX"                           Longueur = 14
#"XXXXXXXXXXXXXXXXXXXXXXXXXX"               Longueur = 26
#"XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX"   Longueur = 38

#La liste contient les caractères autorisées
lst_ref_car = [":","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]

#La liste contient les longueurs de chaines autorisées
lst_ref_long = [10,14,26,38]

#chaine = "ABCDEF01x:"
#chaine = "AB:CD:EF:12::3"
#chaine = "AB:CD:EF:12:32"
chaine = "AB:CD:EF:01:23:45:67:89:AA:BB:CC:DD:EE"


#1-Contrôle de la longueur des chaines
long = len(chaine)
if long in lst_ref_long:
    print "OK : Longueur correcte  ", chaine, "  a une longueur de :", long
else:
    print "ERROR : Longueur incorrecte  ", chaine, "  a une longueur de :", long
    sys.exit()

#2-Contrôle de la validité des caractères
for car in chaine:
    if car not in lst_ref_car:
        print "ERROR : dans la chaine  ",chaine, "  le caractere >" ,car ,"< n'est pas autorisé"
        sys.exit()
print "OK : La chaine  " ,chaine ,"  contient des caractères autorisés"

#3-Contrôle des formats
#Les chaines de longueur 10 ou 26 ne doivent pas contenir le caractère ":"
if long == 10 or long == 26:
    if chaine.find(":") >= 0:
        print "ERROR : dans la chaine  ",chaine, "  le caractere > : < n'est pas autorisé"
    else:
        print "OK : Format de  >", chaine, "  est correct"

#Les chaines de longueur 14 ou 28 doivent contenir ":" tous les deux caractères (XX:)
if long == 14 or long == 38:
    #La méthode SPLIT renvoie une LIST découpée sur l'argument ":"
    # chaque élément de la liste doit avoir une longuer de 2 caractères
    lst_test = chaine.split(":")
    for element in lst_test:
        if len(element) != 2:
            print "ERROR : Format incorrect dans la chaine  ",chaine, "  le caractere > : < est mal positionné"
            sys.exit()
    print "OK : Le format de la chaine ", chaine, " est correct"


Je n'ai pas testé tous les cas de figure.
En espérant avoir répondu à la question.
lundi 1 mars 2010 à 22:31:53 | Re : Test sur le "format" d'une chaine de caractères

arkwonn

Merci beaucoup ! Ce script marche à merveille, et résout mon problème =D
Je n'ai plus qu'a l'adapter !
Merci lespinx !


Cette discussion est classée dans : xx, format, chaine, test, caractères


Répondre à ce message

Sujets en rapport avec ce message

Transformer une liste en chaine de caractères [ par fredouzzz ] Bonjour,        j'ai une liste stockée dans une variable (result_set)        j'aimerais convertir cette liste en une chaîne de caractère.  Par exemp transfomer une liste en chaine de caractères [ par bossou ] Bonjour à tous. J'ai la liste suivante: ['USLUC1', '30422423', '05/11/2009', '24.20', 'USD', 'CHASUS33XXX','', '', '', '', '', '', '3630900'] et j chaine de caractères [ par bossou ] Bonjour.j'ai un fichier texte où je récupère une ligne en faisant une recherche sur un mot.la ligne récupérée contient plusieurs points virgules exemp Remplacement d'une chaine de caractère dans un fichier *.txt [ par Boy63 ] Bonjour,J'aimerais savoir comment remplacer une partie précise d'une chaine de caractère par une autre dans un fichier *.txt. Je m'explique un peu plu {Python} remplacer des caractere dans une chaine [ par Yann2704 ] Bonjours, Python 2.6.1 ... ... Win 32 ... ... >>> c1 = "plop" >>> c2 = "blabla" >>> print c1[3] p >>> print c2[3] b >>> c1[3] = c2[3] Traceback (mos écrire équation contenant des caractères grec sur le pannel wx [ par zannguyen ] Bonjour, Je voudrais écrire une équation mathématique contenant des caractères grecs dans un panel de wxPython. Il est très bien si on peut écrire av Code Napoleon [ par FlyingCevenol ] Bonjour, je suis débutant sur Python et je souhaite générer un code d'encodage et décodage de code "Cesar" (Par exemple, le décalage est de 3, la let probleme avec karrigell [ par majiddus ] bonjour je suis debutant en python,dans le but d'heberger un site web, j'ai installé le serveur karrigell,a partir de mon resau local tout marche bien enregistrer un fichier .txt avec caractères accentués [ par Mic92 ] Bonjour à tous J'enregistre dans une BDD (sqlite) pas de problème les caractères accentués sont enregistré, Mais si je veux enregistrer une fichier . Convertir chaine de caractère [ par basmaber ] Bonsoir J'ai créé un programme qui récupère des données provenant d'un fichier texte qui contient plusieurs valeurs 10 colonnes et 63 lignes. Les donn


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales