如何在Python制作电子邮件提取器?
在本文中,我们将看到如何使用Python和正则表达式提取文本中的所有有效电子邮件。
- 缩写为 regex 或 regexp 也称为有理表达式的正则表达式是一串字符,它们勾勒出一个搜索模式。通常情况下,这样的样式由“查找”或“查找和替换”操作的字符串,或输入验证字符串寻找算法利用。
- 它是在理论计算机技术和自然语言理论中发展起来的一种方法。
- Python的 re 模块完全支持Python类似 Perl 的正则表达式。它提供了一组函数,允许我们在字符串搜索匹配项。
- 在 re Python模块中定义的re.findall()函数接受两个参数并返回找到的所有匹配字符串的列表。
Syntax: re.findall( regex , string )
Parameters:
- The regex is the regular expression which is made of various predefined symbols used to search for the pattern we are looking for.
- The string is the original string on which we are going to preform search action on.
导入必要的模块后,我们将调用 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']