繁体   English   中英

从 .text 文件中提取电子邮件的 Python 脚本

[英]Python script to extract emails from .text file

我目前正在尝试运行从 .txt 文件中提取所有电子邮件的脚本。 运行脚本时,我收到无效的语法错误。 也许有人可以帮助...

import re
in_file = open("C:\\Users\\Testing1_Emails.txt","rt")


for line in in_file:
    if re.match(r'[\w\.-]+@[\w\.-]+')
        print line

你必须写:

if re.match(r'[\w\.-]+@[\w\.-]+',  line):

(添加“行”和“:”)

问题出在这里:

for line in in_file:
    if re.match(r'[\w\.-]+@[\w\.-]+')
        print line

if re.match(r'[\\w\\.-]+@[\\w\\.-]+')语句中,您不会以:

match 方法需要 2 个参数。

见: https : //docs.python.org/2/library/re.html#re.match

重新匹配(模式,字符串,标志= 0)

如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的 MatchObject 实例。 如果字符串与模式不匹配,则返回 None; 请注意,这与零长度匹配不同。

请注意,即使在 MULTILINE 模式下, re.match() 也只会匹配字符串的开头,而不是每行的开头。

如果您想在字符串中的任何位置找到匹配项,请改用 search()(另请参阅 search() 与 match())。

大多数邮件 ID 允许使用字母、数字、点(.)、下划线(_),并且所有这些都肯定包含“@”。 我们可以使用此信息使用正则表达式编写模式。

import re
pat = re.compile(r'[a-zA-Z0-9\._]+@[a-zA-Z\.]') # regex pattern

[az]+ 将匹配任何小写字母,任意数量的出现
[0-9]+ 将匹配任何数字,任何出现次数
[.] 将匹配 '.'

此外,如果您想检查您的模式是否与您的搜索字符串匹配,请在此处查看。 https://regexr.com/

例子: -

f = open("my_file.txt", "w")
f.write('walkup@cs.washington.edu, geb@cs.pitt.edu, walkup@cs.washington.edu \n')
mails = re.findall(r"[a-z]+@[a-z\.]+", f.read())
print(list(set(mails)))

出站:['walkup@cs.washington.edu'、'geb@cs.pitt.edu'、'walkup@cs.washington.edu']

注意:re.findall() 在内部对指定的模式应用 re.pattern()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM