我有一个从url获取xml表的程序。这个xml上有很多数据,因此我只能看到2500个'配置文件'如果你愿意的话。
在这些xml配置文件中,我要求程序提取每个用户ID号,这是一个8位数的代码。我还要求程序将url拉出到我使用endswith()
函数执行的下一个2500个配置文件。
我的问题是在数据的最后一页没有匹配的链接,我需要循环停止,同时还拉出最后一组ID
这是我到目前为止所拥有的:
myURL = 'blah'
while myUrl is not '':
info = request.get(myUrl)
将其转换为字符串列表
end_of_new_link = "thingy"
for link in list
if link.endswith(end_of_new_link)
myUrl = link
我格式化链接,以便我可以在while循环的下一次迭代中使用它
elif link.startswith(IDNUMBER)
listIDs.append(link)
有没有办法可以将变量myUrl
设置为空字符串以退出while循环,或者我的逻辑是错误的
答案 0 :(得分:1)
我认为最简单的方法是使用两个变量而不是一个。
lastUrl, nextUrl = None, 'blah'
while nextUrl != lastUrl:
# url gets consumed and becomes "old"
info, lastUrl = request.get(nextUrl), nextUrl
稍后......
end_of_new_link = "thingy"
for link in list
if link.endswith(end_of_new_link)
nextUrl = link # now it's different so the loop will continue
当然,如果你想要并且有一个包装器对象来标记自上次读取后它的封装数据是否已经改变(或者只是设置了),你可以不必要地抽象它。