2017-04-17 19 views
0

我有一個使用Google Analytics API的Python腳本,並且在for循環中出現語法錯誤。SyntaxError Python - 用於segments.get('items',[])中的細分:

腳本

def get_segments(): 

    try: 
     segments = analytics.management().segments().list().execute() 

# except TypeError, error: 
     # Handle errors in constructing a query. 
#  print 'There was an error in constructing your query : %s' % error 

# except HttpError, error: 
     # Handle API errors. 
#  print ('There was an API error : %s : %s' %(error.resp.status, error.resp.reason)) 

    # Example #2: 
    # The results of the list method are stored in the segments object. 
    # The following code shows how to iterate through them. 
    for segment in segments.get('items', []): 
     print 'Segment Id   = %s' % segment.get('id') 
     print 'Segment kind  = %s' % segment.get('kind') 
     print 'Segment segmentId = %s' % segment.get('segmentId') 
     print 'Segment Name  = %s' % segment.get('name') 
     print 'Segment Definition = %s' % segment.get('definition') 
     if segment.get('created'): 
     print 'Created = %s' % segment.get('created') 
     print 'Updated = %s' % segment.get('updated') 
     print 

錯誤

File "scripty.py", line 87 
    for segment in segments.get('items', []): 
    ^
SyntaxError: invalid syntax 
+1

如果你沒有'except',爲什麼會有'try'? – melpomene

+1

您註釋掉了所有'except'塊。 Python不會允許沒有'except'或'finally'的'try'。 – user2357112

+2

當語句錯誤不明顯的地方,插入點開始掃描回到前面的行。 –

回答

1

的語法錯誤是不是在對的,但在事實上,你註釋掉除了匹配條款嘗試。嘗試沒有除外是錯誤的。

0

for循環沒有縮進。 Python根據縮進來分割塊。除此之外,如果你正在使用try,你也將不得不使用catch塊。這樣的事情應該解決語法錯誤:

try: 
    segments = analytics.management().segments().list().execute() 
    for segment in segments.get('items', []): 
    print 'Segment Id   = %s' % segment.get('id') 
    print 'Segment kind  = %s' % segment.get('kind') 
    print 'Segment segmentId = %s' % segment.get('segmentId') 
    print 'Segment Name  = %s' % segment.get('name') 
    print 'Segment Definition = %s' % segment.get('definition') 
    if segment.get('created'): 
     print 'Created = %s' % segment.get('created') 
     print 'Updated = %s' % segment.get('updated') 
    print 
except Exception as e: 
    print "Exception Caught!" 
0

這可能是因爲你有沒有exceptfinallytry塊。如果for循環是當try塊失敗,把它內除了塊:

def get_segments(): 
    try: 
     segments = analytics.management().segments().list().execute() 
    except: 
     for segment in segments.get('items', []): 
      print 'Segment Id   = %s' % segment.get('id') 
      print 'Segment kind  = %s' % segment.get('kind') 
      print 'Segment segmentId = %s' % segment.get('segmentId') 
      print 'Segment Name  = %s' % segment.get('name') 
      print 'Segment Definition = %s' % segment.get('definition') 
      if segment.get('created'): 
       print 'Created = %s' % segment.get('created') 
       print 'Updated = %s' % segment.get('updated') 
      print 

在一般情況下,應指定要與抓except塊例如異常的類型如果有多個,則爲except ValueError:except (RuntimeError, TypeError, NameError):。如果不管是否發生錯誤,都要執行該塊,則應將其放入finally之內。