【发布时间】:2019-07-26 21:24:41
【问题描述】:
我有一个包含各种电子邮件地址和其他无效电子邮件行的 txt 文件,我试图只打印有效的电子邮件地址,当我使用下面的代码时,没有打印任何内容。 这是txt文件的内容:
blbabal@gmail.com
hey@gmail.com
lalalalal
在这种情况下,只应打印两个电子邮件地址
import re
my_file = open('emails.txt', 'r+')
【问题讨论】:
-
添加
re.M标志,re.findall(r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.-]+$", my_file.read(), re.M) -
这与这个问题非常相似:stackoverflow.com/q/6186938/4636715 除了您专门寻找电子邮件地址。但是由于您的观点不是您构建的正则表达式,因此可以将其视为骗局。
-
@vahdet 这与那个问题不相似。在这里,整行必须匹配一个模式。
-
没有打印任何内容,因为
for循环正在遍历文件,该文件已经使用.read()搜索到末尾。你为什么不迭代items呢? -
您正在寻找匹配项,将它们存储在
items中,并且在下一行您将覆盖items。