Python如果没有命令后跟Else语法错误

时间:2018-04-15 05:11:39

标签: python syntax indentation

我正在编写一个基本的网页抓取代码,它基本上会获取帖子的日期和标题,如果日期> =存储在SQL数据库中的日期和标题!=来自标题也存储在DB,然后做一些事情。

我在执行时遇到语法错误。这是代码:

for i in web_results:
    py_newsdate = datetime.strptime(i.find('div', attrs={'class': "infoItem"}).find_all('p')[0].getText()[6:], '%d/%m/%Y')
    py_newstitle = i.find('h3').find('a')['title'] 

    if (py_newsdate < sql_latest[0][0] or py_newstitle == sql_latest[0][1]):
    else:
        py_newslink = i.find('h3').find('a')['href'] 
        web_results_final.append([py_newsdate, py_newstitle, py_newslink])

print(web_results_final)

这是错误:

  File "searcher", line 37
    else:
       ^
IndentationError: expected an indented block

我知道必须正确地设计块,但我认为问题可能在于这个“空”如果。

感谢。

3 个答案:

答案 0 :(得分:2)

块需要遵循一些东西。如果您有一个阻止空的块,请使用pass语句:

if (py_newsdate < sql_latest[0][0] or py_newstitle == sql_latest[0][1]):
    pass
else:
    py_newslink = i.find('h3').find('a')['href'] 
    web_results_final.append([py_newsdate, py_newstitle, py_newslink])

无论您是尝试内联还是多行编写块,都是如此:

if 0: pass
else: print(2)

注意:您必须为else块添加新行。这不起作用:

if 0: pass; else: print(2)

答案 1 :(得分:1)

如果使用

,效率会更高
if not (py_newsdate < sql_latest[0][0] or py_newstitle == sql_latest[0][1]):
    py_newslink = i.find('h3').find('a')['href'] 
    web_results_final.append([py_newsdate, py_newstitle, py_newslink])

答案 2 :(得分:-1)

if (py_newsdate < sql_latest[0][0] or py_newstitle == sql_latest[0][1]):
    continue
else:
    py_newslink = i.find('h3').find('a')['href'] 
    web_results_final.append([py_newsdate, py_newstitle, py_newslink])