我有一个字符串列表:
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]
答案 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