2017-04-17 4 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

「例外」がないと「試行」があるのはなぜですか? – 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

あなたがexceptまたはfinallyブロックなし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 

forループはtryブロックが失敗したときのものである場合、ブロックを除い以内にそれを置きますexcept ValueError:またはexcept (RuntimeError, TypeError, NameError):複数ある場合。エラーが発生するかどうかにかかわらずブロックを実行させたい場合は、finallyに入れてください。

関連する問題