我while True:在webscraping脚本中运行循环.我希望刮刀在增量循环中运行,直到遇到某个错误.一般的问题是如何在某个条件匹配时突破一段时间的True循环.代码就是永远输出第一次运行:
output 1;1
...
output 1;n
Run Code Online (Sandbox Code Playgroud)
这是我的代码的最小可重现的示例.
runs = [1,2,3]
for r in runs:
go = 0
while True:
go +=1
output = ("output " + str(r) + ";" +str(go))
try:
print(output)
except go > 3:
break
Run Code Online (Sandbox Code Playgroud)
所需的输出是:
output 1;1
output 1;2
output 1;3
output 2;1
output 2;2
output 3;3
output 3;1
output 3;2
output 3;3
[done]
Run Code Online (Sandbox Code Playgroud)
你不需要try和except这里.保持简单,只需while对go变量使用简单的条件.在这种情况下,你甚至不需要a,break因为只要go>=3条件为False,你就会退出while循环并重新启动while循环以获得下一个值r.
runs = [1,2,3]
for r in runs:
go = 0
while go <3:
go +=1
output = ("output " + str(r) + ";" +str(go))
print(output)
Run Code Online (Sandbox Code Playgroud)
产量
output 1;1
output 1;2
output 1;3
output 2;1
output 2;2
output 2;3
output 3;1
output 3;2
output 3;3
Run Code Online (Sandbox Code Playgroud)
替代消磨:由于@chepner建议,你甚至都不需要while,并与超过更好的for循环go的
for r in runs:
for go in range(1, 4):
output = ("output " + str(r) + ";" +str(go))
print(output)
Run Code Online (Sandbox Code Playgroud)