Rechercher : dans
Par :

Python>>> Email extractor

Dernière réponse le 3 mai 2008 à 16:47:42 sebsauvage, le 3 avr 2002 à 11:35:24 
 Signaler ce message aux modérateurs

Comment extraire les adresses email de n'importe quel fichier ?

Avec 2 lignes de code en Python !

import sys,re
print '\n'.join(re.findall('([\w\.\-]+@[\w\.\-]+)',sys.stdin.read(­)))


Détaillons un peu ça:

sys.stdin, c'est l'entrée standard (le clavier en général, mais ça peut aussi être un fichier lu avec monprogramme.exe < monfichier.txt).

sys.stdin.read() est une chaîne qui contient tout ce qu'il y a sur l'entrée standard.

On utilise le module d'expressions régulière (re) pour trouver toutes les chaînes (findall) qui ressemblent à une adresse email ([\w\.\-]+@[\w\.\-]+).

\w c'est les caractères a-z, A-Z, 0-9 et _
\. c'est le point (.)
\- c'est le tiret (-).
[\w\.\-]+ veut dire : "n'importe quelle combinaison d'un ou plusieurs caractères a-z, A-Z, 0-9, _, - ou ."

Une adresse email est toujours de la forme toto@titi.com :
on répète donc après l'arobase (@):
[\w\.\-]+@[\w\.\-]+


re.findall('([\w\.\-]+@[\w\.\-]+)', chaine ))
va donc renvoyer une liste de toutes les adresses email contenues dans la chaîne. Exemple:
>>> import re
>>> print re.findall('([\w\.\-]+@[\w\.\-]+)','coucou a@boo.com kiki c@dodo.net gloug')
['a@boo.com', 'c@dodo.net']


On va coller ensemble tous les éléments de cette liste pour en faire une seule chaîne de caractères, en séparant chacun des éléments par un retour à la ligne (\n). Exemple:
>>> b = ['bozo','le','clown']
>>> print '\n'.join(b)
bozo
le
clown
>>> print ' * '.join(b)
bozo * le * clown


Et on affiche le résultat:
print '\n'.join(re.findall('([\w\.\-]+@[\w\.\-]+)',sys.stdin.read()))


Sauvegardez les 2 lignes de Python dans un fichier texte (par exemple email_extractor.py) et donnez-lui à manger *n'importe* quel fichier (par exemple un fichier HTML pris au hasard sur le web, ou un fichier EXE, ou une DLL):

python email_extractor.py < monfichier.html


On pourrait encore affiner l'expression régulière (par exemple pour forcer la présence d'un point dans le nom de domaine)
Mais dans la majorité des cas, ça suffit.

Meilleures réponses pour « Python>>> Email extractor » dans :
Votre première application graphique avec Python et Glade VoirCe guide vous aidera à créer pas à pas votre première application graphique. Nous allons utiliser le langage de programme Python et l'API graphique GTK, en utilisant le logiciel Glade pour créer facilement les interfaces graphiques. C'est de la...
Gagner 25€ par email VoirMythe Il y a de bons plans sur internet pour gagner 25€ par email. (ou plus généralement: Il y a de bon plans sur internet pour gagner de l'argent sans bouger le cul de sa chaise). Réalité FAUX Explications C'est l'arnaque classique de la...
[Python] Lire et écrire des fichiers CSV VoirLIRE ET ÉCRIRE DES FICHIERS CSV Python www.python.org, dans sa version 2.4 supporte de facto le format CSV (comma-separated values: valeurs séparées par des virgules). La Library Reference est certes très explicative à ce sujet, mais uniquement...

1

 wiili, le 3 mai 2008 à 16:47:42
  • +3

Merci pour les detail mais mon probleme est que je ne sait pas utiliser le logiciel pour extraire les mails . a chaque foi que j'essais j'ai comme resultat rien. car je veut envoyer un mail a 500 personnes que je ne connait pas vraiment merci d'avantage

Répondre à wiili