📜  如何在Python制作电子邮件提取器?

📅  最后修改于: 2022-05-13 01:54:47.099000             🧑  作者: Mango

如何在Python制作电子邮件提取器?

在本文中,我们将看到如何使用Python和正则表达式提取文本中的所有有效电子邮件。

  • 缩写为 regex 或 regexp 也称为有理表达式的正则表达式是一串字符,它们勾勒出一个搜索模式。通常情况下,这样的样式由“查找”或“查找和替换”操作的字符串,或输入验证字符串寻找算法利用。
  • 它是在理论计算机技术和自然语言理论中发展起来的一种方法。
  • Python的 re 模块完全支持Python类似 Perl 的正则表达式。它提供了一组函数,允许我们在字符串搜索匹配项。
  • 在 re Python模块中定义的re.findall()函数接受两个参数并返回找到的所有匹配字符串的列表。

导入必要的模块后,我们将调用 re 模块中定义的 findall() 方法来查找与作为参数传递的正则表达式匹配的所有字符串。

正则表达式可以分为三部分:



1. r”[A-Za-z0-9_%+-.]+”

此表达式查找由 AZ 定义的所有大写字母、小写字母 az、所有数字 0-9 和特殊字符(如 _%+-)组成的连续字符序列。 . '+' 用于将第二个正则表达式附加到第一个。

2. r”@[A-Za-z0-9.-]+”

此表达式查找由 AZ 定义的所有大写字母、小写字母 az、所有数字 0-9 和特殊字符(如 ._)组成的连续字符序列。 '+' 用于将第二个正则表达式附加到第一个。

3. r”\.[A-Za-z]{2,5}”

此表达式查找由 AZ 定义的所有大写字母组成的连续字符序列,小写字母 az 使得该连续序列的大小在 2-5 之间(包括两者)。

示例 1:从字符串提取有效的电子邮件

Python3
# Raw text
text = "Duis info@geeksforgeeks.com convallis. Parturient montes nascetur ridiculus mus \
geeksforgeeks@rocks.xyz mauris. Odio eu feugiat pre@rsos_tium.index nibh ipsum consequat love@gfg.in \
pretium aenean pharetra magna ac placerat. Vitae justo eget magna fermentum iaculis eu non."
 
#import regex module
import re
 
#finding all valid emails using regex
reg = re.findall(r"[A-Za-z0-9_%+-.]+"
                 r"@[A-Za-z0-9.-]+"
                 r"\.[A-Za-z]{2,5}",text)
 
#printing all the valid emails found
print(reg)


Python3
#importing module
import re
 
with open('sample.txt','r') as file:
  for line in file:
    line = line.strip()
     
    # finding all valid emails
    reg = re.findall(r"[A-Za-z0-9_%+-.]+"
                      r"@[A-Za-z0-9.-]+ "
                      r"\.[A-Za-z]{2,5}",line)
 
#printing all the valid emails found
print(reg)


输出:

['info@geeksforgeeks.com', 'geeksforgeeks@rocks.xyz', 'love@gfg.in']

示例 2:从文本文件中提取有效电子邮件

使用 open()函数,我们以“r”模式打开所需的文件,只读模式。并且对于每一行,我们剥离该行以删除空格并以类似于第一个示例的方式处理它们。

蟒蛇3

#importing module
import re
 
with open('sample.txt','r') as file:
  for line in file:
    line = line.strip()
     
    # finding all valid emails
    reg = re.findall(r"[A-Za-z0-9_%+-.]+"
                      r"@[A-Za-z0-9.-]+ "
                      r"\.[A-Za-z]{2,5}",line)
 
#printing all the valid emails found
print(reg)

输出:

['info@geeksforgeeks.com', 'geeksforgeeks@rocks.xyz', 'love@gfg.in']