Python:继续循环

时间:2013-10-21 03:15:43

标签: python continue

我使用以下代码:

from bs4 import BeautifulSoup

soup = BeautifulSoup (open("43rd-congress.htm"))

final_link = soup.p.a
final_link.decompose()

trs = soup.find_all('tr')

for tr in trs:
    for link in tr.find_all('a'):
         fulllink = link.get ('href')
         print fulllink #print in terminal to verify results

tds = tr.find_all("td")

try: 
        names = str(tds[0].get_text())
    years = str(tds[1].get_text())
    positions = str(tds[2].get_text())
    parties = str(tds[3].get_text())
    states = str(tds[4].get_text())
    congress = tds[5].get_text()

 except:
    print "bad tr string"
    continue 


    print names, years, positions, parties, states, congress

我收到以下错误:

SyntaxError: 'continue' not properly in loop.

为什么?我检查了缩进和冒号。感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

一些事情。

首先,continue用于while或for循环,以告诉循环跳到下一次迭代。在try / except块中使用它的地方不起作用。您可能会考虑pass,但如果您尝试执行以下操作,则只需要这样做:

try:
    # Code with potential error
except ErrortoCatch:
    pass

你想要一个缩进块,但不要做任何事情。在这里,这意味着您要捕获异常,但不要对此做任何事情。

你有一些缩进错误和古怪,就像名字意外缩进一个额外的水平。这可能是因为你有混合标签(扩展到8个空格)和空格(你应该使用4个)。 PEP 8说你应该使用4个空格来缩进,建议你应该遵循。

什么是可能导致您的错误是您使用裸except:,这几乎绝不是一个好主意。当你使用try / except块时,你应该总是知道你正在寻找什么错误,所以当你只是试图处理一些特定的异常时,你不会意外地掩盖真正的错误。值得注意的是,except:也捕获了KeyboardInterrupt之类的东西,你真的,真的,不想抓住这些东西。

我认为正在发生的是try块中的一个操作导致错误导致变量由于某种原因而无法打印。这可能是很多事情,因此您应该在except语句中指定要尝试处理的错误,然后找出需要修复的其他错误。

此外,您不应该在函数名称与其调用之间留有空格,例如: link.get ('href') => link.get('href')

答案 1 :(得分:0)

continue仅允许在for或while循环中使用。你把它放在except中。我认为你可能会做出错误的缩进或误解continue