title: Getting lat/long coordinates from identified tweets using tweepy; getting KeyError: 'coordinates'
body: <p>I'm trying to get the lat/long coordinates from identified tweets. The part I am having trouble with is the <code>if decoded['coordinates']!=None: t.write(str(decoded['coordinates']['coordinates'])</code> block. I don't know exactly if it's working or not because sometimes <code>~150</code> tweets will be returned with coordinates as <code>[None]</code> before the error is returned, so I believe the error comes back when a tweet with coordinates is found, and then it returns <code>KeyError: 'coordinates'</code>.</p>
  
  <p>The following is my code:</p>
  
  <pre><code>import tweepy
  import json
  from HTMLParser import HTMLParser
  import os
  
  consumer_key = ''
  consumer_secret = ''
  access_token = ''
  access_token_secret = ''
  
  # This is the listener, resposible for receiving data
  class StdOutListener(tweepy.StreamListener):
      def on_data(self, data):
          # Twitter returns data in JSON format - we need to decode it first
          decoded = json.loads(HTMLParser().unescape(data))
  
          os.chdir('/home/scott/810py/Project')
          t = open('hashtagHipster.txt','a')
  
          # Also, we convert UTF-8 to ASCII ignoring all bad characters sent by users
          #if decoded['coordinates']:
  
          # decoded['coordinates'] returns a few objects that are not useful,
          # like type and place which we don't want. ['coordinates'] has a
          # second thing called ['coordinates'] that returns just the lat/long.
          # it may be that the code is correct but location is so few and far
          # between that I haven't been able to capture one. This program just
          # looks for 'hipster' in the tweet. There should be a stream of tweets
          # in the shell and everytime one that has coordinates tehy should be
          # added to the file 'hashtagHipster.txt'. Let me know what you think.
  
          if decoded['coordinates']!=None:
              t.write(str(decoded['coordinates']['coordinates'])) #gets just [LAT][LONG]
          print '[%s] @%s: %s' % (decoded['coordinates'], decoded['user']['screen_name'], decoded['text'].encode('ascii', 'ignore'))
          print ''
          return True
  
      def on_error(self, status):
  
          print status
  
  if __name__ == '__main__':
      l = StdOutListener()
      auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
      auth.set_access_token(access_token, access_token_secret)
  
      print "Showing all new tweets for #hipster:"
  
      # There are different kinds of streams: public stream, user stream, multi-user streams
      # In this example follow #vintage tag
      # For more details refer to https://dev.twitter.com/docs/streaming-apis
      stream = tweepy.Stream(auth, l)
      stream.filter(track=['hipster'])
  </code></pre>
  
  <p>Any help? thanks.</p>