IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Tester la présence d'un phrase.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 211
    Billets dans le blog
    1
    Par défaut Tester la présence d'un phrase.
    Bonjour,
    J'ai écrit un petit bout de code d'essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    phrase2 = 'UnNom'
     
    if phrase2 == '':
        print 'Il manque un nom'
    elif phrase2.isalnum():
            print 'Le nom est :', phrase2
    Mon problème est que si je place 'Un Nom' dans phrase2, Python ne reconnaît pas phrase2 comme contenant un chaîne.

    Or je voudrais justement pouvoir vérifier si j'ai bien une phrase ou des mots, y compris avec des espaces entre les mots dans ma variable.

    Dans ce bout de code, s'il n'y a rien dans phrase2, c'est parfait. J'ai bien 'Il manque un nom'.
    Si je mets 'UnNom' dans phrase2, j'imprime bien 'Le nom est UnNom'.
    Mais si je mets 'Un Nom' (avec l'espace entre les deux mots) ... Python ne fait rien !

    Comment faire pour résoudre mon petit problème ?

    Merci.

  2. #2
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Le fait est que l’espace n’étant pas un caractère alpha-numérique, isalnum() renvoie False dans ce cas.

    La réponse dépendrait un peu de ce que vous voulez faire exactement… On peut utiliser le couteau (suisse) de poche, en supposant que vos “noms” sont des noms propres, vous pouvez tomber sur deux ou trois caractères non-alphanumériques, soit " ", "-" et "'". Dans ce cas encore relativement simple, un petit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elif phrase2.replace(' ', '').replace('-', '').replace("'", '').isalnum():
    …peut faire l’affaire. On peut l’améliorer comme ceci, s’il y a plus de caractères à “ignorer”*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    _trans = str.maketrans("", "", " -'’")
     
    [...]
     
    elif phrase2.translate(_trans).isalnum():
    Les deux approches sont globalement équivalentes, il s’agit de tester la condition isalnum() sur une chaîne temporaire débarrassée des caractères non-alphanumériques que l’on considère malgré tout comme valides.

    Après, on peut avoir recours à du plus gros calibre (comme dégainer les sets), voire à la grosse artillerie (par exemple faire monter au front les regex)…

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Mais si je mets 'Un Nom' (avec l'espace entre les deux mots) ... Python ne fait rien !
    La question est : Que devrait-il faire?

  4. #4
    Membre très actif

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 211
    Billets dans le blog
    1
    Par défaut C'est OK !
    Bonjour,

    Je réponds aux deux #2 et #3 :
    C'est ce que je désire réaliser : vérifier si le nom est valide, sans autre signes que des caractères, des chiffres, des espaces, des - ou des _.

    Pour les autres visiteurs, je mets mon exemple.
    1. Dans phrase, j'inscris un numéro de série qui doit être composé de 2 lettres majuscules suivies de 3 chiffres.
    2. Dans phrase2, je place ma proposition d'un nom qui doit contenir au moins un caractère alphanumérique et peut contenir un ou des espace(s), -, _.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    phrase = 'F_110'
    OK = phrase[:2].isalpha()
    if OK:
        print 'OK : Préfixe = ', phrase[:2].upper()
    if not(OK):
        print 'OK : Préfixe n\'est pas alpha :', phrase.lower()
     
    if phrase[:2].isalpha():
        print 'Préfixe est alpha :', phrase[:2].upper()
     
    if phrase[2:4].isdigit():
        print 'Nombre =', phrase[2:5]
    else:
        print 'Problème'
     
    phrase2 = 'UnNom'
     
    if phrase2 == '':
        print 'Il manque un nom'
    elif phrase2.replace(' ', '').replace('-', '').replace("_", '').isalnum():
            print 'Le nom proposé est :', phrase2
            print 'Le nom complet sera :', phrase.upper() + '_' + phrase2
    Merci pour vos aides si précieuses .

    P.S.
    Ceci n'est, évidemment, qu'un exemple de test didactique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tester la présence de plusieurs mots dans une phrase
    Par Azerty32 dans le forum Général Python
    Réponses: 20
    Dernier message: 30/07/2010, 17h15
  2. VBA - Tester la présence d'un composant
    Par n1portki dans le forum Général VBA
    Réponses: 1
    Dernier message: 20/09/2005, 05h18
  3. Comment tester la présence de machine ?
    Par bluesnr dans le forum Web & réseau
    Réponses: 9
    Dernier message: 22/04/2005, 17h20
  4. [JSP]Tester la présence d'un attribut
    Par StagiaireEnGalère dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 08/02/2005, 09h35
  5. Réponses: 11
    Dernier message: 02/04/2004, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo