On Mar 29, 4:58 pm, Chris Rebert <c...@rebertia.com> wrote: > On Sun, Mar 29, 2009 at 1:39 PM, WallyDD <shaneb...@gmail.com> wrote: > > Hello, > > > I am trying to geocode some map data using the google maps API. > > > By using the urllib I can get the JSON output; > >http://maps.google.com/maps/geo?q=New+York+USA&output=json&oe=utf8&se... > > > I then read it using; > > gmapiresult = json.loads(fg.read()) > > somedata = gmapiresult['Placemark'] > > > result is; (somedata) > > [{u'Point': {u'coordinates': [-73.986951000000005, 40.756053999999999, > > 0]}, u'ExtendedData': {u'LatLonBox': {u'west': -74.25909, u'east': > > -73.699793, u'north': 40.917498999999999, u'south': > > 40.477383000000003}}, u'AddressDetails': {u'Country': {u'CountryName': > > u'USA', u'AdministrativeArea': {u'AdministrativeAreaName': u'NY', > > u'Locality': {u'LocalityName': u'New York'}}, u'CountryNameCode': > > u'US'}, u'Accuracy': 4}, u'id': u'p1', u'address': u'New York, NY, > > USA'}] > > > Can I further refine the data in "somedata" or am I reliant on string > > manipulation? > > all I need to get is the data in "coordinates". > > > I am not sure if this is a json problem or if I don't understand lists > > well enough. > > What you get back from the JSON is just some nested lists and > dictionaries containing the data, not a giant string (wouldn't be a > very useful serialization format then, now would it?). > If you pretty-print the data using pprint.pprint(), it becomes much > more readable (I hope linewrap did not get activated...): > > [{u'AddressDetails': {u'Accuracy': 4, > u'Country': {u'AdministrativeArea': > {u'AdministrativeAreaName': u'NY', > > u'Locality': {u'LocalityName': u'New York'}}, > u'CountryName': u'USA', > u'CountryNameCode': u'US'}}, > u'ExtendedData': {u'LatLonBox': {u'east': -73.699793, > u'north': 40.917498999999999, > u'south': 40.477383000000003, > u'west': -74.25909}}, > u'Point': {u'coordinates': [-73.986951000000005, 40.756053999999999, 0]}, > u'address': u'New York, NY,USA', > u'id': u'p1'}] > > So to get the coordinates, you simply do: > coords = somedata[0]['Point']['coordinates'] > > which gets the first and only element in the toplevel list, and this > element is a dictionary, > and then gets the value associated with the key 'Point' in that > dictionary, which gives us another dictionary (that happens to have > only one key-value pair), > and finally gets the value associated with the key 'coordinates' in > that dictionary, which gives us the desired list of floats. > > Cheers, > Chris > -- > I have a blog:http://blog.rebertia.com
Excellent. Thank you very much. pprint looks very helpful. -- http://mail.python.org/mailman/listinfo/python-list