2016-10-01 57 views
0
dd = (re.findall(r'">County<(.*?)</td>', lmth2)) 
if not dd: 
    dd = (re.findall(r'<small>Location in <a(.*?)</td>',lmth2) 
      if not dd: 
      county.append("") 
      fin.append(name[o]+';'+address[o]+';'+city[o]+';'+stateorg[o]+';'+county[o]+';'+phone[o]+';'+website[o]) 
      continue 
    else: 
     ee = (re.findall(r'title="(.*?) County', dd[0])) 
     county.append(ee[0]) 
     fin.append(name[o]+';'+address[o]+';'+city[o]+';'+stateorg[o]+';'+county[o]+';'+phone[o]+';'+website[o]) 

我试图堆叠如果NOT NOT在一起找到查找结果。如果堆叠的IF NOTs

如果dd没有出现匹配,那么我想尝试第二种情况。如果没有找到匹配,那么现在我想要它显示它,因为没有任何内容出现,并且设置要保存到文件的行。如果它确实找到了比我需要的匹配,则继续查找使用ee =(re.findall ...)搜索的第二级别

直到找到第二种可能的方案来搜索所有内容找到,但后来我发现我需要寻找所以我想将其添加到程序的另一种可能的事情,我不断收到无效语法回来的:在第二

if not dd: 

这是一个是超越我的方式。当我使用VB6时,我不习惯使用堆叠的if(如果)这样的问题。 Python似乎在处理事情有点不同。

+0

另外...根据你想要做什么,简化你的逻辑可能会更容易。请记住:“不是A而不是B”与“不(A或B)”相同。有关更多信息,请参阅[DeMorgan理论](http://hyperphysics.phy-astr.gsu.edu/hbase/electronic/demorgan.html)。 – Basic

+0

我希望它在测试条件之前测试一个条件,甚至在它尝试设置条件二之前。如果条件一存在,则条件二不会。因此,啄食顺序和我试图使用的方法。 – confused

+0

你可以在一个陈述中完成所有这些。 Python为运营商使用短路。只要它发现一个条件可以阻止一个块被执行,它就会停止......假设你有......如果something()和something_else():'......在执行过程中,如果something()返回'false','something_else()'永远不会被执行/测试。我已经把功能放在了这里,因为我认为这就是你的所作所为。普通变量的工作方式是一样的。请参阅http://stackoverflow.com/questions/2580136/does-python-support-short-circuiting。和一个维基链接:https://en.wikipedia.org/wiki/Short-circuit_evaluation – Basic

回答

0

缩进在Python中在语法上很重要。不像语言,块由像beginend{}这样的标记确定,Python块由缩进和缩进决定。

因此,您不能任意缩进Python代码。每当Python遇到比它上面的行缩进得更远的行时,它就会认为它是新块的第一行。您遇到的问题是,在第一个if声明中,您已经使用dd = ...行建立了该块的缩进级别,然后您已经缩进了下一个if语句,而它应该处于相同的缩进级别。

如果您删除第二行if not dd:行上的额外缩进,则不应再有语法错误。

+0

我刚刚删除了额外的缩进,我仍然得到同样的错误: – confused

+0

你也有上一行无法比拟的括号,这可能是为什么你的文本编辑器缩进下一行比它应该有更多。 –

+0

删除行中的第一个括号之前,如果过于严重缩进'if':用'dd = re.findall ...'替换'dd =(re.findall ...'。 –