我有一个字符串列表(html代码),我想提取我列表中每个字符串中的所有电子邮件

时间:2016-07-23 16:31:41

标签: python string text

我有一个字符串列表:

urls = ["url1","url2","url3"]

为了生成另一个字符串列表:

for i in range (0,2):
    htmlist = [urllib.urlopen(url[i]).read() for i in range(0,2) ]

当我尝试使用以下代码从文本htmlist [i]中提取电子邮件时:

for i in range (0,2) :
    emails = re.findall(r'[\w\.-]+@[\w\.-]+', htmlist[i])
print emails

代码仅打印htmlist[2]

中的电子邮件 你可以帮帮我吗? 感谢

1 个答案:

答案 0 :(得分:0)

那是因为emails获取了最后一次迭代的值(htmlist[2])。将print语句移动到for循环中,以便在每次迭代时查看emails

for i in range (0, 3) :
    emails = re.findall(r'[\w\.-]+@[\w\.-]+', htmlist[i])
    print emails

更重要的是,第一次迭代不需要range,因为你已经有了列表理解。您只需将停止索引更改为3,即可htmmlist[0]htmmlist[1]htmmlist[2]

htmlist = [urllib.urlopen(url[i]).read() for i in range(0,3)]
#                                                       ^

使用range仅在for循环运行时重复初始迭代。 htmlist只会是循环中的最后一个值。所以列表理解就足够了。

您还可以使用列表推导来保留列表中每个网址的所有电子邮件:

htmlist = [urllib.urlopen(url[i]).read() for i in range(0,3)]

emails = [re.findall(r'[\w\.-]+@[\w\.-]+', htmlist[i]) for i in range(0,3)]
print emails