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 :

Un petit défi : tester si une chaîne est un nombre romain


Sujet :

Python

  1. #1
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut Un petit défi : tester si une chaîne est un nombre romain
    Pour tester si une chaîne de caractères sans espace est un naturel, je fais comme suit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            if chaine[0] != '-':
    # Avec la structure Try..., il est facile de tester
    # si une variable est un entier. On doit faire
    # attention aux entiers relatifs négatifs.
                try :
                    test = int(chaine)
    # Traitement de mon naturel...
                except:
                    pass
    Je voudrais maintenant tester si ma chaîne est un nombre romain i, ii, ...

    Quelqu'un aurait-il une idée ? Peut-être qu'une regex bien choisie devrait aider ?

  2. #2
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Dive into Python a déjà résolu le problème : voir cette page. Merci Google...

    Je mets la regex ici (ce n'est pas trop dur à comprendre):
    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
    # Pour tester si une chaîne est un nombre romain.
    # La méthode vient du livre "Dive into Python".
    romanNumeralPattern = re.compile('''
            ^                                  # beginning of string
            M{0,4}                    # thousands - 0 to 4 M's
            (CM|CD|D?C{0,3})        # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's),
                                                    #                       or 500-800 (D, followed by 0 to 3 C's)
            (XC|XL|L?X{0,3})        # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's),
                                                    #               or 50-80 (L, followed by 0 to 3 X's)
            (IX|IV|V?I{0,3})        # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's),
                                                    #               or 5-8 (V, followed by 0 to 3 I's)
            $                                  # end of string
            ''' ,re.VERBOSE)
     
    if maChaine.isupper():
        if romanNumeralPattern.search(motDeb):
    # C'est ok.
    elif motDeb.islower():
        if romanNumeralPattern.search(motDeb.upper()):
    # C'est ok.

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

Discussions similaires

  1. Tester si une chaîne est un monétaire
    Par kariel dans le forum WinDev
    Réponses: 5
    Dernier message: 26/06/2015, 10h14
  2. Tester si une chaîne est compatible UTF-8
    Par monnomamoi dans le forum Général Python
    Réponses: 2
    Dernier message: 16/04/2010, 08h00
  3. vérifier si une chaîne est un nombre
    Par cmoibal dans le forum C
    Réponses: 12
    Dernier message: 09/02/2008, 09h01
  4. [DBF] Tester si une chaîne est vide
    Par ®om dans le forum JDBC
    Réponses: 7
    Dernier message: 26/07/2007, 16h30
  5. Tester si une chaine est un nombre
    Par Grimdol dans le forum C
    Réponses: 15
    Dernier message: 24/06/2006, 11h44

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