Bonjour,
la réponse est sûrement dans ce forum mais j'ose quand même la (re)poser.
Comment savoir si un texte donné est à peu près une adresse HTML ?
Bonjour,
la réponse est sûrement dans ce forum mais j'ose quand même la (re)poser.
Comment savoir si un texte donné est à peu près une adresse HTML ?
Ce que tu appelles adresse HTML est une URL. Elle peut avoir toutes sortes de formes correctes...
Le plus simple est d'utiliser la lib urlparse à voir (ici).
Il te suffit de vérifier que o.scheme vaut bien "http".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 >>> import urlparse >>> o = urlparse.urlparse('http://docs.python.org/library/urlparse.html') >>> o ParseResult(scheme='http', netloc='docs.python.org', path='/library/urlparse.html', params='', query='', fragment='')
Le souci c'est que cela marche sur une adresse complète. Quelque chose comme "www.google.com" n'est pas repéré.
Bonjour,
Comme j'en avais besoin il y a quelques mois, je me suis penché sur la vérification des adresses mail par regex. C'est ici:
http://python.jpvweb.com/mesrecettes...f_adresse_mail
Le problème, c'est que les normes permettent des syntaxes d'adresses mails très complexes, voire farfelues (ex: l'adresse !d!x\\y~z%abc@example.com est valide).
Comme je voulais seulement détecter des fautes de frappes après saisie au clavier, j'ai simplifié un peu, quitte à avoir quelques "faux non-conformes". Mais tu peux rajouter ce qui manque... à condition d'éplucher les normes (j'en donne les adresses).
Tyrtamos
Merci, je vais étudier cela dès que possible et je reviendrais à l'attaque ici.
Je déterre ce post car je me heurte au problème suivant :
J'obtiens FALSE et non TRUE comme espéré.
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 # -*- coding: utf-8 -*- #! /usr/bin/env python import re # The following pattern commes from the following page : # http://python.jpvweb.com/mesrecettespython/verif_adresse_mail PATTERN_MAIL = re.compile(r""" ^ # beginning of string [a-zA-Z0-9_\-]+ #il y a un premier mot compose de caracteres alphanumeriques et/ou le blanc souligne et/ou le tiret (mot eventuellement reduit a 1 seul caractere) (\.[a-zA-Z0-9_\-]+)* #il peut y avoir eventuellement d'autres mots de même composition, chacun precede d'un seul point @ #l'inevitable arrobas [a-zA-Z0-9_\-]+ #il y a un premier mot compose de caracteres alphanumeriques et/ou le blanc souligne et/ou le tiret (mot eventuellement reduit a 1 seul caractere) (\.[a-zA-Z0-9_\-]+)* #il peut y avoir eventuellement d'autres mots de même composition, chacun precede d'un seul point (\.[a-zA-Z]{2,6}) #il y a forcement un dernier mot uniquement alphabetique, de longueur pouvant aller de 2 (ex: "fr") a 6 (ex: "museum") et precede par un seul point $ # end of string """) def isSimpleMail(stringToTest): return bool(PATTERN_MAIL.search(stringToTest)) print(str(isSimpleMail("mail@club.fr")))
Le problème vient de ma syntaxe multiligne car le code suivant fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 # -*- coding: utf-8 -*- #! /usr/bin/env python import re # The following pattern commes from the following page : # http://python.jpvweb.com/mesrecettespython/verif_adresse_mail PATTERN_MAIL = re.compile(r"^[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)*@[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)*(\.[a-zA-Z]{2,6})$") def isSimpleMail(stringToTest): return bool(PATTERN_MAIL.search(stringToTest)) print(str(isSimpleMail("mail@club.fr")))
Comment avoir une présentation multiligne afin de la commenter ?
Partager