Python : Expression régulière
Nouga
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai besoin d'aide pour trouver une expression régulière, j'ai plusieurs liens coller sans distinction particulière entre eux et je souhaite trouver une expression pour les récupérer, mon problème est le suivant.
Ma chaine ressemble a ça :
http://www.google.frhttp://fr.weather.comhttp://www.meteoconsult.com
Je ne trouve pas le moyen d'éviter d'inclure une chaine entière, je souhaiterais trouver quelque chose qui ce rapproche de [^http] mais pour une chaine entière, car cette manière ne prends que les lettres individuellement. J'ai regarder la documentation de python bien entendu mais je dois avouer que je suis un peu perdu.
Merci de m'aider.
J'ai besoin d'aide pour trouver une expression régulière, j'ai plusieurs liens coller sans distinction particulière entre eux et je souhaite trouver une expression pour les récupérer, mon problème est le suivant.
Ma chaine ressemble a ça :
http://www.google.frhttp://fr.weather.comhttp://www.meteoconsult.com
Je ne trouve pas le moyen d'éviter d'inclure une chaine entière, je souhaiterais trouver quelque chose qui ce rapproche de [^http] mais pour une chaine entière, car cette manière ne prends que les lettres individuellement. J'ai regarder la documentation de python bien entendu mais je dois avouer que je suis un peu perdu.
Merci de m'aider.
A voir également:
- Python : Expression régulière
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Exercice python - Forum Python
8 réponses
Les réponses données ici sont correctes. Je t'en donne une autre qui t'enverras sous forme de liste les urls
ch="http://www.google.frhttp://fr.weather.comhttp://www.meteoconsult.com" new_ch=ch.replace("http://", " ").split() # resultat : ['www.google.fr', 'fr.weather.com', 'www.meteoconsult.com'] for url in new_ch: print "http://"+url # pour avoir les urls sous la forme http://... # resultat : #https://www.google.fr/?gws_rd=ssl #https://weather.com/fr-FR/temps/aujour/l/FRXX0076:1:FR #http://www.meteoconsult.com</code>
Que demander de plus? Le faire avec le module re, c'est comme écraser une fourmi avec un marteau piqueur
Bonjour,
Pas besoin de passer par une regexp, tu peux tout simplement utiliser la méthode slip.
Par exemple : chaine.split("http://") te renverra dans un tableau www.google.fr, fr.weather.com, www.meteoconsult.com
Et si tu veux, tu peux remettre facilement le http:// devant si ça t'es important.
Cdlt,
Pas besoin de passer par une regexp, tu peux tout simplement utiliser la méthode slip.
Par exemple : chaine.split("http://") te renverra dans un tableau www.google.fr, fr.weather.com, www.meteoconsult.com
Et si tu veux, tu peux remettre facilement le http:// devant si ça t'es important.
Cdlt,
Merci pour ta réponse,
Effectivement ça serai une solution mais il ce trouve que je dois utiliser une expression régulière pour ce cas, si quelqu'un pouvait m'aider dans ce sens, ça dois surement être possible mais je n'arrive pas a trouver par moi même.
Effectivement ça serai une solution mais il ce trouve que je dois utiliser une expression régulière pour ce cas, si quelqu'un pouvait m'aider dans ce sens, ça dois surement être possible mais je n'arrive pas a trouver par moi même.
Sans espaces entre tes urls c'est pas évident. La solution proposée précédemment est bonne et de toute façon bien plus rapide que les expressions régulières.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tu sais que ton adresse est comprise entre deux "http://" donc, un truc dans le genre :
find(" http://[:alpnum:|.|/]*http://|$ " )
c'est à dire tout caractère alphanumérique plus les caractères accepter dans les URL ('/', '.', '_', '-' ...) compris entre "http://" et : "http://" ou une fin de ligne.
find(" http://[:alpnum:|.|/]*http://|$ " )
c'est à dire tout caractère alphanumérique plus les caractères accepter dans les URL ('/', '.', '_', '-' ...) compris entre "http://" et : "http://" ou une fin de ligne.
@Char Snipeur:
en quoi ma solution ne conviens pas ?
Merci d'essayer de m'aider avant tout, le tiens quand même a le dire et surtout ne t'offusque pas. C'est juste que tu me propose une idée que je décris dans mon premier poste, c'est à dire prendre la chaine entre "http" et "http" en me proposant un exemple qui n'est la que pour représenté ton idée donc qui ne fonctionnement pas, du coup il faut admettre que ça ne m'aide que moyennement.
@fred1599:
Merci, je pense que je vais utilisé ta proposition vu que je ne trouve pas pour l'expression régulière, au passage peux tu m'expliquer, si ce n'est pas trop abusé de ton temps, pourquoi tu me déconseilles d'utilisé le module re, c'est un module particulièrement lourd ?
en quoi ma solution ne conviens pas ?
Merci d'essayer de m'aider avant tout, le tiens quand même a le dire et surtout ne t'offusque pas. C'est juste que tu me propose une idée que je décris dans mon premier poste, c'est à dire prendre la chaine entre "http" et "http" en me proposant un exemple qui n'est la que pour représenté ton idée donc qui ne fonctionnement pas, du coup il faut admettre que ça ne m'aide que moyennement.
@fred1599:
Merci, je pense que je vais utilisé ta proposition vu que je ne trouve pas pour l'expression régulière, au passage peux tu m'expliquer, si ce n'est pas trop abusé de ton temps, pourquoi tu me déconseilles d'utilisé le module re, c'est un module particulièrement lourd ?
Le même programme avec : new_ch=ch.split("http://") fait exactement pareil.
Par contre, il me semble qu'avec la méthode split tu te retrouves dans ta liste de résultats avec un "http://" seul, c'est tout.
Par contre comme tu l'as fait remarquer si justement, j'avais oublié le fait que chaine.split("[http://]") laissera un élément vide en début de liste. Il faut donc utiliser : new_ch=ch.split("[http://]")[1:]
Cdlt,
Par contre je savais pas que le slicing était considéré comme une fonction. Je pensais que [1:] permettait d'accéder directement à partir de l'élément 1 via un pointeur en C.