2016-02-12 75 views
-6

我在第一個elif上不斷收到錯誤Invalid syntax。我非常肯定語法是正確的,但我不知道爲什麼我一直得到這個錯誤。如果Python中的其他語句錯誤

def make_tracker(self): 
     self.region = re.search(r'CLI Command: \'show system information\'',line) 
     if self.region: 
      self.region = "show system information" 
      return self.region 

     self.region = re.search(r'CLI Command: \'show card detail\'',line) 
     elif self.region: 
      #The error is on the elif statement it self^
      self.region = "CPM or IOM" 
      return self.region 

     self.region = re.search(r'CLI Command: \'show mda detail\'',line) 
     elif self.region: 
      self.region = "MDA" 

     else: 
      print"Could not Enter any of the regions" 
+1

那麼,不,該語法是不正確的。 'elif'只能在'if'後面存在;但之前你有'self.region'。 –

+1

你不能在'if'和'elif'之間有不屬於'if'範圍的表達式。 – Forge

+2

由於在第一個'if'和第一個'elif'之後使用'return',所以根本不需要'elif'。用'if'替換它們。 –

回答

2

我認爲這是宥想要什麼,更換elifif

def make_tracker(self): 
    self.region = re.search(r'CLI Command: \'show system information\'',line) 
    if self.region: 
     self.region = "show system information" 
     return self.region 

    self.region = re.search(r'CLI Command: \'show card detail\'',line) 
    if self.region: 
     #The error is on the elif statement it self^
     self.region = "CPM or IOM" 
     return self.region 

    self.region = re.search(r'CLI Command: \'show mda detail\'',line) 
    if self.region: 
     self.region = "MDA" 
     return self.region 

    print"Could not Enter any of the regions" 

現在有沒有需要一個else聲明,但你必須在第三if添加return,否則最後的print將被執行。

更多有關if.. else ..聲明read the tutorial

1

正如其他人所說的,問題是你如果和elif的語句之間的表達式。要保留當前的功能,您可以將自身區域變量更改爲類似於

def make_tracker(self): 
    self.regionSystem = re.search(r'CLI Command: \'show system information\'',line) 
    self.regionCard = re.search(r'CLI Command: \'show card detail\'',line) 
    self.regionMDA = re.search(r'CLI Command: \'show mda detail\'',line) 

    if self.regionSystem: 
     self.region = "show system information" 
     return self.region 

    elif self.regionCard: 
     #The error is on the elif statement it self^
     self.region = "CPM or IOM" 
     return self.region 

    elif self.regionMDA: 
     self.region = "MDA" 

    else: 
     print"Could not Enter any of the regions" 
+0

是的,但請注意,如果第一個模式成功,您將搜索最後兩個模式爲空。 –

1

爲什麼在使用文字字符串時總是使用正則表達式?

def make_tracker(self): 
    if "CLI Command: 'show system information'" in line: 
     self.region = "show system information" 
     return self.region 

    elif "CLI Command: 'show card detail'" in line: 
     self.region = "CPM or IOM" 
     return self.region 

    elif "CLI Command: 'show mda detail'" in line: 
     self.region = "MDA" 

    else: 
     print"Could not Enter any of the regions"