Extraire des sous-chaînes de courrier électronique à partir d'un document volumineux
J'ai une très grande .fichier txt avec des centaines de milliers d'adresses e-mail sont dispersés partout. Ils prennent tous la format:
...<name@domain.com>...
Quelle est la meilleure façon d'avoir de Python pour faire défiler l'ensemble .fichier txt à la recherche pour toutes les instances d'un certain @domaine de chaîne, puis saisir l'intégralité de l'adresse dans le <...>'s, et l'ajouter à une liste? Le problème que j'ai est avec la longueur variable des adresses différentes.
source d'informationauteur user1893148
Vous devez vous connecter pour publier un commentaire.
Ce code extrait les adresses e-mail dans une chaîne de caractères. L'utiliser lors de la lecture ligne par ligne
Si vous avez plusieurs adresses e-mail utiliser
findall
:L'expression régulière ci-dessus trouve probablement le plus commun des non-fausse adresse de courriel. Si vous voulez être tout à fait en harmonie avec la RFC 5322 vous devriez vérifier les adresses e-mail suivre le cahier des charges. Vérifier cette pour éviter les bugs dans la recherche d'adresses e-mail correctement.
Edit: comme suggéré dans un commentaire de @kostek:
Dans la chaîne
Contact us at [email protected].
ma regex retourne [email protected]. (avec un point à la fin). Pour éviter cela, utilisez[\w\.,]+@[\w\.,]+\.\w+)
Edit II: une autre merveilleuse amélioration a été mentionné dans les commentaires:
[\w\.-]+@[\w\.-]+\.\w+
qui va capter [email protected] ainsi.Vous pouvez également utiliser la syntaxe suivante pour trouver toutes les adresses e-mail dans un texte et de les imprimer dans un tableau ou chaque e-mail sur une ligne distincte.
Si vous souhaitez ajouter à une liste, il suffit d'imprimer le "match"
cela permettra d'imprimer la liste
Espère que cette aide.
Si vous êtes à la recherche pour un domaine spécifique:
Voici une autre approche de ce problème spécifique, avec une regex de emailregex.com: