A voir également:
- Python : Expression régulière
- Citizen code python avis - Accueil - Outils
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- [PyCharm] Pas d'interpréteur python ✓ - Forum Python
- Extraire données fichier texte python ✓ - Forum Python
8 réponses
Utilisateur anonyme
25 août 2010 à 15:46
25 août 2010 à 15:46
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
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
22 août 2010 à 15:32
22 août 2010 à 15:32
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.
Utilisateur anonyme
23 août 2010 à 08:55
23 août 2010 à 08:55
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
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
23 août 2010 à 11:24
23 août 2010 à 11:24
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.
Je relance mon sujet en désespoir de cause, je n'ai toujours pas trouver de solution correcte.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
25 août 2010 à 14:24
25 août 2010 à 14:24
en quoi ma solution ne conviens pas ?
@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 ?
Utilisateur anonyme
25 août 2010 à 18:00
25 août 2010 à 18:00
Sur du texte complexe, le module re est très efficace, mais sur du gros fichier il est particulièrement long, et si on peut l'éviter, les autres solutions seront toujours plus rapides.
25 août 2010 à 19:39
Le même programme avec : new_ch=ch.split("http://") fait exactement pareil.
Modifié par fred1599 le 25/08/2010 à 19:49
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.
Modifié par fiddy le 25/08/2010 à 21:23
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,
26 août 2010 à 11:56
26 août 2010 à 20:36
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.