Expressions régulières
Résolu/Fermé
A voir également:
- Expressions régulières
- Expressions visage bitmoji ✓ - Forum Snapchat
- Que veulent dire les expressions lol et mdr ? ✓ - Forum Loisirs / Divertissements
- Ameca : le robot qui imite les expressions faciales humaines - Accueil - Intelligence artificielle
- Probleme expressions commande man man | grep -e “reg_expr"* ✓ - Forum Shell
3 réponses
Bonjour, il y a une petite subtilité à savoir avec re.match.
Help on function match in module re:
match(pattern, string, flags=0)
Try to apply the pattern at the start of the string, returning
a match object, or None if no match was found.
(END)
Ce qui signifie que
>>> import re >>> re.match('http', 'ccm : https://www.commentcamarche.net/') >>> re.match('http', 'https://www.commentcamarche.net/') <_sre.SRE_Match object; span=(0, 4), match='http'> >>> re.search('http', 'ccm : https://www.commentcamarche.net/') <_sre.SRE_Match object; span=(6, 10), match='http'> >>> help(re.match)
Help on function match in module re:
match(pattern, string, flags=0)
Try to apply the pattern at the start of the string, returning
a match object, or None if no match was found.
(END)
Ce qui signifie que
re.match(expr) == re.search(^expr)
Utilisateur anonyme
Modifié le 31 janv. 2019 à 07:24
Modifié le 31 janv. 2019 à 07:24
Bonjour
est ce que ceci te conviendrait
http://regexstorm.net/tester?p=http.%2B%5C.fr%2F&i=http%3A%2F%2Ftoto.fr%2F%0D%0Acoucouhttp%3A%2F%2Ftoto.fr%2Fmachin%0D%0Ahttp%3A%2F%2Ftoto.fr%0D%0Ahttptoto.fr%2F%0D%0A
Ou faut il s'assurer
Dans ton code tu travaille ligne par ligne, mais comme le montre l'exemple, il est possible de traiter le texte entier
est ce que ceci te conviendrait
http://regexstorm.net/tester?p=http.%2B%5C.fr%2F&i=http%3A%2F%2Ftoto.fr%2F%0D%0Acoucouhttp%3A%2F%2Ftoto.fr%2Fmachin%0D%0Ahttp%3A%2F%2Ftoto.fr%0D%0Ahttptoto.fr%2F%0D%0A
Ou faut il s'assurer
- qu'après le http il y ait "://"
- que http soit en début de ligne
Dans ton code tu travaille ligne par ligne, mais comme le montre l'exemple, il est possible de traiter le texte entier
jlouis-01_45170
Messages postés
6
Date d'inscription
mardi 29 janvier 2019
Statut
Membre
Dernière intervention
3 février 2019
31 janv. 2019 à 10:22
31 janv. 2019 à 10:22
Je te remercie MAIS je débute en python et j'ai besoin de récupérer uniquement les lignes qui contiennent http et une extension de domaine comme .fr.
Voila ou j'en suis et ca ne fonctionne pas..... je craque. ce que je veux c'est récupérer dans ligne_sr uniquement les lignes qui contiennent le pattern.
merci de ton aide.
fic_entree = open("EXPORT.CSV","r",errors='ignore')
ligne_lue = fic_entree.readline()
regex = r"(http.+\.fr/)"
for ligne_lue in fic_entree:
ligne_sor = ""
ligne_sor = re.match(regex,ligne_lue)
if ligne_sor != "":
nbr_lue += 1
Voila ou j'en suis et ca ne fonctionne pas..... je craque. ce que je veux c'est récupérer dans ligne_sr uniquement les lignes qui contiennent le pattern.
merci de ton aide.
fic_entree = open("EXPORT.CSV","r",errors='ignore')
ligne_lue = fic_entree.readline()
regex = r"(http.+\.fr/)"
for ligne_lue in fic_entree:
ligne_sor = ""
ligne_sor = re.match(regex,ligne_lue)
if ligne_sor != "":
nbr_lue += 1
jlouis-01_45170
Messages postés
6
Date d'inscription
mardi 29 janvier 2019
Statut
Membre
Dernière intervention
3 février 2019
31 janv. 2019 à 13:49
31 janv. 2019 à 13:49
pour tes 2 questions, je dirais peu importe. Imaginons que je recherche toutes les lignes qui contiennent http et .fr c'est juste pour me permettre de démarrer sur les regex en python
Utilisateur anonyme
31 janv. 2019 à 15:54
31 janv. 2019 à 15:54
jlouis-01_45170
Messages postés
6
Date d'inscription
mardi 29 janvier 2019
Statut
Membre
Dernière intervention
3 février 2019
31 janv. 2019 à 16:59
31 janv. 2019 à 16:59
Merci encore mais ca ne fonctionne pas avec le code ci-dessous, toutes les lignes sont sélectionnées alors qu'elles ne devraient pas l'être... grrrrr
fic_entree = open("EXPORT.CSV","r",errors='ignore')
ligne_lue = fic_entree.readline()
regex = "(^|\n).*http.+\.fr.*(\r|$)"
for ligne_lue in fic_entree:
ligne_sor = ""
ligne_sor = re.match(regex,ligne_lue)
if ligne_sor != "":
nbr_lue += 1
fic_entree = open("EXPORT.CSV","r",errors='ignore')
ligne_lue = fic_entree.readline()
regex = "(^|\n).*http.+\.fr.*(\r|$)"
for ligne_lue in fic_entree:
ligne_sor = ""
ligne_sor = re.match(regex,ligne_lue)
if ligne_sor != "":
nbr_lue += 1
Pour poster un code, merci d'utiliser les balises de code, explications ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Entre autre cela conserve l'indentation, qui est essentielle ben Python.
D'autre part, je ne code pas en Python, donc je ne sais pas te dire en détails ce qui ne va pas, cependant, il semble que tu continues à traiter ligne par ligne, ce qui est inutile. Sur le site exemple y'a pas de boucle, et pourtant il y a plusieurs lignes sélectionnées.
Entre autre cela conserve l'indentation, qui est essentielle ben Python.
D'autre part, je ne code pas en Python, donc je ne sais pas te dire en détails ce qui ne va pas, cependant, il semble que tu continues à traiter ligne par ligne, ce qui est inutile. Sur le site exemple y'a pas de boucle, et pourtant il y a plusieurs lignes sélectionnées.
jlouis-01_45170
Messages postés
6
Date d'inscription
mardi 29 janvier 2019
Statut
Membre
Dernière intervention
3 février 2019
31 janv. 2019 à 18:56
31 janv. 2019 à 18:56
ok c'est bon grace à toi j'ai trouvé je vais continuer à apprendre
merci pour tout
bien à toi
jean-Louis
merci pour tout
bien à toi
jean-Louis