Expressions régulières
Résolu/Fermé
jlouis45170
-
Modifié le 29 janv. 2019 à 18:06
Whismeril Messages postés 18992 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 mars 2024 - 31 janv. 2019 à 19:25
Whismeril Messages postés 18992 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 mars 2024 - 31 janv. 2019 à 19:25
A voir également:
- Expressions régulières
- Expressions francaises - Forum Études / Formation High-Tech
- Kyocera Ecosys P3060dn, traces régulières - Forum Imprimante
- Expressions visage bitmoji ✓ - Forum Snapchat
- LaTeX - Expressions mathématiques - Astuces et Solutions
- Que veulent dire les expressions lol et mdr ? ✓ - Forum Loisirs / Divertissements
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)
Whismeril
Messages postés
18992
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 mars 2024
923
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
Whismeril
Messages postés
18992
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 mars 2024
923
31 janv. 2019 à 12:50
31 janv. 2019 à 12:50
besoin de récupérer uniquement les lignes qui contiennent http et une extension de domaine comme .fr.
Une regex c’est très précis. Et ta description ne l’est pas.
De plus, je t’ai posé 2 questions auxquelles tu n’as pas répondues.
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
Whismeril
Messages postés
18992
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 mars 2024
923
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
Whismeril
Messages postés
18992
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 mars 2024
923
31 janv. 2019 à 18:26
31 janv. 2019 à 18:26
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
Whismeril
Messages postés
18992
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 mars 2024
923
31 janv. 2019 à 19:25
31 janv. 2019 à 19:25
de rien, pense à marquer le sujet résolu avec la roue dentée tout en haut.