我正在尝试使用re.findall()
功能提取电子邮件地址。我使用for
- 循环逐行读取文本文件,但输出只是一个空列表。我可以将findall()
完美地用于单行,但不能逐行读取文本文件。
from re import *
fname = input('enter file name\n:')
fhand = open(fname)
for line in fhand:
line = line.rstrip()
x = findall('^From (\S+@\S+)', line)
print(x)
答案 0 :(得分:0)
无需一次读取一行。您可以将findall()
函数应用于整个文件。
from re import findall
fname = input('filename> ')
with open(fname,'r',encoding='utf-8') as f:
data = f.read()
#data = ['from foobarbaz@gmail.com','From FooBar_Baz@hotmail.com.es','...']
mails = findall('(?i)from\s+\S+@\S+\.\S+(?:\.\S+)?',data)
for mail in mails: print(mail)