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 :

regex avec Python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut regex avec Python
    Bonjour,

    Je cherche à écrire la regex qui dans une chaine, me trouvera un pattern du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (51° 06,12′ N — 1° 38,24′ E)
    J'ai testé sur le site regex101. com cette regex qui matche bien avec la chaine ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^\(\d{1,2}\°\s\d{2}\,\d{1,4}\'\s[NS]\s\-\s\d{1,3}\°\s\d{2}\,\d{1,4}\'\s[EW]\)$
    Mais si je code avec Python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    t = "(51° 06,12′ N — 1° 38,24′ E)"
     
    prog = re.compile(r"(\d{1,2}°\s\d{2},\d{1,4}'\s[NS]\s-\s\d{1,3}°\s\d{2},\d{1,4}'\s[EW])")
     
    print(prog.match(t))
    Le print me renvoie None.

    Qu'est ce qui cloche?

    Merci,
    Nico

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Beaucoup de choses
    • le caractère n'est pas '
    • le caractère n'est pas -
    • si tu testes sur regex101.com la chaine "^\(\d..." mais que tu appelles, dans ton code, une chaine "(\d..." qui est manifestement différente, ton test sur regex101.com ne prouve plus rien

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t = "(51° 06,12' N - 1° 38,24' E)"
    prog = re.compile(r"^\(\d{1,2}°\s\d{2},\d{1,4}'\s[NS]\s-\s\d{1,3}°\s\d{2},\d{1,4}'\s[EW]\)$")
    print(prog.match(t))
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Bonjour. Je viens de tester ta regexp sur le site regex101 et en lui fournissant ta chaîne de caractères en exemple, désolé mais c'est 0 match.

    Tu es sûr que ça fonctionne de ton côté ? Tu n'as pas modifié quelque chose dans ta regexp entre ton test sur le site et ton code en Python ?

    Edit : grilled by Sve@r

  4. #4
    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
    Hello,

    Petit test de mon côté fonctionnel,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import re
     
    s = "blabla (51° 06,12′ N — 1° 38,24′ E) bla"
     
    res = re.search("\(\d{2}° \d{2},\d{2}′ [NS] — \d{1,2}° \d{2},\d{2}′ [EW]\)", s)
    coords = res.group() if res is not None else None
    assert coords == "(51° 06,12′ N — 1° 38,24′ E)"
    print(coords)

Discussions similaires

  1. création de base mySQL avec python
    Par preacher_man dans le forum Bibliothèques tierces
    Réponses: 7
    Dernier message: 23/06/2006, 19h38
  2. cmt se connecté a oracle pour faire une requete avec python
    Par dipajero dans le forum Bibliothèques tierces
    Réponses: 6
    Dernier message: 28/12/2005, 20h22
  3. Réponses: 2
    Dernier message: 19/12/2005, 13h15
  4. Les 128 derniers bits d'un fichier en ligne avec Python ?
    Par ecocentric dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 26/09/2005, 12h40
  5. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 10h26

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