Solved

TypeError: string indices must be integers while parsing JSON using Python

Posted on 2014-12-29
5
5,711 Views
Last Modified: 2015-01-14
Hi,

I am parsing json to csv using Python 3.4, but I get the following TypeError and would appreciate some assistance:

Traceback (most recent call last):
  File "C:\Temp\MetOfficehourlyjson.py", line 104, in <module>
    for rep in period['Rep']:
TypeError: string indices must be integers


#!/usr/bin/python
 
#-------------------------------------------------------------------------------------------
#Assemble a CSV file from the Hourly Observation Service from the Met Office 
#DataPoint API.
 
#It does an API request,
#parses the data as JSON, then turns that into a set of data model objects, those
#are them flattened and written down as a CSV file.

#Known Issues:
 
#* Some of the data isn't filled in (data date, data type, etc).
#* Error handling just sets the field to blank.
#* There's only real error handling on the observation data.
#-------------------------------------------------------------------------------------------
 
import requests
import json
import csv
 
API_KEY = ".........................................."
URL = "http://datapoint.metoffice.gov.uk/public/data/val/wxobs/all/json/all?res=hourly&time=2014-12-29T13Z&key=%s" % (API_KEY)
OUTPUT_FILE = "C:\Temp\example_data.csv"
 
def remove_key(d, key):
#-------------------------------------------------------------------------------------------
    #Remove a key from a dictionary.
    #Return a copy of the dict.
#-------------------------------------------------------------------------------------------
    r = dict(d)
    del r[key]
    return r
 
def flatten_location(loc):
#-------------------------------------------------------------------------------------------
    #Flatten a Location instance in preparation for writing to a CSV.
#-------------------------------------------------------------------------------------------
    location = loc.__dict__
    location_info = remove_key(location, 'data')
    location_data = []
 
    for data in location['data']:
        flat_data = data.__dict__
        flat = dict(list(location_info.items()) + list(flat_data.items()))
        location_data.append(flat)
 
    return location_data
 
class Location():
#-------------------------------------------------------------------------------------------
    #Data Model for locations returned from DataPoint.
#-------------------------------------------------------------------------------------------
    def __init__(self):
        self.data_date = ""
        self.data_type = ""
        self.location_id = ""
        self.lat = ""
        self.lon = ""
        self.name = ""
        self.country = ""
        self.continent = ""
        self.data = []
 
    def __repr__(self):
        return "<Location: %s>" % (self.name)
 
class Data():
#-------------------------------------------------------------------------------------------
    #Data Model for collected data returned from DataPoint
#-------------------------------------------------------------------------------------------
    def __init__(self):
        self.collection_time = ""
        self.wind_direction = ""
        self.pressure = ""
        self.wind_speed = ""
        self.temperature = ""
        self.visibility = ""
        self.weather_type = ""
        
    def __repr__(self):
        return "<Data: %s>" % (self.collection_time)
 
# fetch data, parse json
r = requests.get(URL)
j = r.json()
 
# get a collection of locations
locations = j['SiteRep']['DV']['Location']
parsed_locations = []
 
for location in locations:
    # turn the locations into Location objects
    loc = Location()
    loc.location_id = location['i']
    loc.lat = location['lat']
    loc.lon = location['lon']
    loc.name = location['name']
    loc.country = location['country']
    loc.continent = location['continent']
 
    # turn the location's data into Data objects
    for period in location['Period']:
        for rep in period['Rep']:
            data = Data()
            data.collection_time = rep['$']
            try:
                data.wind_direction = rep['D']
            except KeyError:
                data.wind_direction = ""
            try:
                data.pressure = rep['P']
            except KeyError:
                data.pressure = ""
            try:
                data.wind_speed = rep['S']
            except KeyError:
                data.wind_speed = ""
            try:
                data.temperature = rep['T']
            except KeyError:
                data.temperature = ""
            try:
                data.visibility = rep['V']
            except KeyError:
                data.visibility = ""
            try:
                data.weather_type = rep['W']
            except KeyError:
                data.weather_type = ""
 
            loc.data.append(data)
 
    # hold onto a flattened version of the location
    parsed_locations.extend(flatten_location(loc))
 
# write the csv
with open(OUTPUT_FILE, "wt") as f:
    writer = csv.DictWriter(f, parsed_locations[0].keys())
    writer.writeheader()
    for d in parsed_locations:
        writer.writerow(d)

Open in new window

0
Comment
Question by:crompnk
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 25

Accepted Solution

by:
clockwatcher earned 500 total points
ID: 40523136
The JSON the system is returning isn't structured the way you're trying to parse it.  Your Location[Period] is a dictionary:
                    "Period": {
                        "type": "Day",
                        "value": "2014-12-29Z",
                        "Rep": {
                            "D": "W",
                            "H": "68.5",
                            "P": "1029",
                            "S": "16",
                            "T": "7.3",
                            "V": "17000",
                            "W": "8",
                            "Pt": "F",
                            "Dp": "2.0",
                            "$": "780"
                        }
                    }

Open in new window


Iterating over that will iterate over over the keys of the dictionary ("type", "value", "Rep").   In other words, these lines:

   for period in location['Period']:
       for rep in period['Rep']:

Don't make sense in the context of the JSON that the system returns.  Your period variable will be equal to one of the keys of the dictionary ("Rep", "value", or "type").  So, essentially, you're doing this:

   for rep in "type"['Rep']:

Which obviously doesn't make sense and throws an exception because you're trying to index into a string via a string.

I think what you're after is something more like this (change lines 103 to 132) to:
    # turn the location's data into Data objects
    rep = location['Period']['Rep']
    data = Data()
    data.collection_time = rep['$']
    data.wind_direction = rep.get('D', "")
    data.pressure = rep.get('P',"")
    data.wind_speed = rep.get('S',"")
    data.temperature = rep.get('T',"")
    data.visibility = rep.get('V',"")
    data.weather_type = rep.get('W',"")
 
    loc.data.append(data)

Open in new window

0
 

Author Comment

by:crompnk
ID: 40523658
Thanks, that worked, but if there is another level of ("type", "value", "Rep") it gets confused and throws an error:

Traceback (most recent call last):
  File "C:\Temp\MetOfficehourlyjson.py", line 113, in <module>
    rep = location['Period']['Rep']
TypeError: list indices must be integers, not str


{  
   "SiteRep":{  
      "Wx":{  
         "Param":[  

         ]
      },
      "DV":{  
         "dataDate":"2014-12-30T13:00:00Z",
         "type":"Obs",
         "Location":{  
            "i":"3002",
            "lat":"60.749",
            "lon":"-0.854",
            "name":"BALTASOUND",
            "country":"SCOTLAND",
            "continent":"EUROPE",
            "elevation":"15.0",
            "Period":[  
               {  
                  "type":"Day",
                  "value":"2014-12-29Z",
                  "Rep":[  
                     {  
                        "D":"W",
                        "G":"29",
                        "H":"64.7",
                        "P":"1029",
                        "S":"19",
                        "T":"7.5",
                        "V":"22000",
                        "W":"8",
                        "Pt":"F",
                        "Dp":"1.4",
                        "$":"840"
                     }
                  ]
               },
               {  
                  "type":"Day",
                  "value":"2014-12-30Z",
                  "Rep":[  
                     {  
                        "D":"SW",
                        "H":"96.6",
                        "P":"1025",
                        "S":"19",
                        "T":"6.8",
                        "V":"2600",
                        "W":"11",
                        "Pt":"F",
                        "Dp":"6.3",
                        "$":"0"
                     }
                  ]
               }
            ]
         }
      }
   }
}

Open in new window


I also need to append the data from Period>type and value to the csv. I modified the code but it doesn't like to append both data and pdata:

    loc.data.append(data)
    loc.data.append(pdata)

Open in new window


Traceback (most recent call last):
  File "N:\Configuration\MetOfficehourlyjson.py", line 153, in <module>
    writer.writerow(d)
  File "C:\Python34\lib\csv.py", line 153, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
  File "C:\Python34\lib\csv.py", line 149, in _dict_to_list
    + ", ".join([repr(x) for x in wrong_fields]))
ValueError: dict contains fields not in fieldnames: 'data_type', 'data_date'



#!/usr/bin/python
 
#-------------------------------------------------------------------------------------------
#Assemble a CSV file from the Hourly Observation Service from the Met Office 
#DataPoint API.
 
#It does an API request,
#parses the data as JSON, then turns that into a set of data model objects, those
#are them flattened and written down as a CSV file.

#Known Issues:
 
#* Some of the data isn't filled in (data date, data type, etc).
#* Error handling just sets the field to blank.
#* There's only real error handling on the observation data.
#-------------------------------------------------------------------------------------------
 
import requests
import json
import csv
 
API_KEY = "................................................"
#* Example: to obtain observations for every location in the UK at all available times in JSON format:
#URL = "http://datapoint.metoffice.gov.uk/public/data/val/wxobs/all/json/all?res=hourly&key=%s" % (API_KEY)
#* Example: to obtain observations for every location in the UK at a particular time in JSON format:
URL = "http://datapoint.metoffice.gov.uk/public/data/val/wxobs/all/json/all?res=hourly&time=2014-12-29T23Z&key=%s" % (API_KEY)
#* Example: to obtain observations for a specified location at all available times in JSON format:
#URL = "http://datapoint.metoffice.gov.uk/public/data/val/wxobs/all/json/3002?res=hourly&key=%s" % (API_KEY)

OUTPUT_FILE = "C:\Temp\example_data.csv"
 
def remove_key(d, key):
#-------------------------------------------------------------------------------------------
    #Remove a key from a dictionary.
    #Return a copy of the dict.
#-------------------------------------------------------------------------------------------
    r = dict(d)
    del r[key]
    return r
 
def flatten_location(loc):
#-------------------------------------------------------------------------------------------
    #Flatten a Location instance in preparation for writing to a CSV.
#-------------------------------------------------------------------------------------------
    location = loc.__dict__
    location_info = remove_key(location, 'data')
    location_data = []
 
    for data in location['data']:
        flat_data = data.__dict__
        flat = dict(list(location_info.items()) + list(flat_data.items()))
        location_data.append(flat)

    return location_data
 
class Location():
#-------------------------------------------------------------------------------------------
    #Data Model for locations returned from DataPoint.
#-------------------------------------------------------------------------------------------
    def __init__(self):
        self.location_id = ""
        self.lat = ""
        self.lon = ""
        self.name = ""
        self.country = ""
        self.continent = ""
        self.data = []
 
    def __repr__(self):
        return "<Location: %s>" % (self.name)

class Period():
#-------------------------------------------------------------------------------------------
    #Data Model for period data returned from DataPoint.
#-------------------------------------------------------------------------------------------
    def __init__(self):
        self.data_date = ""
        self.data_type = ""
 
    def __repr__(self):
        return "<Period: %s>" % (self.name)

class Data():
#-------------------------------------------------------------------------------------------
    #Data Model for collected data returned from DataPoint
#-------------------------------------------------------------------------------------------
    def __init__(self):
        self.collection_time = ""
        self.wind_direction = ""
        self.pressure = ""
        self.wind_speed = ""
        self.temperature = ""
        self.visibility = ""
        self.weather_type = ""
        self.wind_gust = ""
        self.pressure_tendency = ""
        self.dew_point = ""
        self.screen_relative_humidity = ""
        
    def __repr__(self):
        return "<Data: %s>" % (self.collection_time)
 
# fetch data, parse json
r = requests.get(URL)
j = r.json()
 
# get a collection of locations
locations = j['SiteRep']['DV']['Location']
parsed_locations = []
 
for location in locations:
    # turn the locations into Location objects
    loc = Location()
    loc.location_id = location['i']
    loc.lat = location['lat']
    loc.lon = location['lon']
    loc.name = location['name']
    loc.country = location['country']
    loc.continent = location['continent']

    # turn the location's period data into Data objects
    per = location['Period']
    pdata = Period()
    pdata.data_type = per['type']
    pdata.data_date = per['value']

    # turn the location's data into Data objects
    rep = location['Period']['Rep']
    data = Data()
    data.collection_time = rep['$']
    data.wind_direction = rep.get('D', "")
    data.pressure = rep.get('P',"")
    data.wind_speed = rep.get('S',"")
    data.temperature = rep.get('T',"")
    data.visibility = rep.get('V',"")
    data.weather_type = rep.get('W',"")
    data.wind_gust = rep.get('G',"")
    data.pressure_tendency = rep.get('Pt',"")
    data.dew_point = rep.get('C',"")
    data.screen_relative_humidity = rep.get('H',"")

    loc.data.append(data)
    loc.data.append(pdata)
 
    # hold onto a flattened version of the location
    parsed_locations.extend(flatten_location(loc))
 
# write the csv
with open(OUTPUT_FILE, "wt") as f:
    writer = csv.DictWriter(f, parsed_locations[0].keys())
    writer.writeheader()
    for d in parsed_locations:
        writer.writerow(d)

Open in new window

0
 
LVL 25

Assisted Solution

by:clockwatcher
clockwatcher earned 500 total points
ID: 40523972
It appears that they've got a lovely system that will return things both ways (as a simple object and a list of objects).   The easy way of handling that is to always treat it as a list of objects.  If you don't actually get back a list of objects but instead you get just an object then you simply put that object in a list...

    periods = location['Period']
    if hasattr(periods, "keys"):
        periods = list((periods,))
    for period in periods:
        reps = period['Rep']
        if hasattr(reps, "keys"):
            reps = list((reps,))           
        for rep in reps:
            # create your object and append it to your dataset
            ....

Open in new window

0
 
LVL 25

Assisted Solution

by:clockwatcher
clockwatcher earned 500 total points
ID: 40524054
As for the other part of your question, I'm not exactly sure how you want that data to show up in your CSV.  Doing what you're doing, you've got sets of dictionaries with different keys in your list.  

I'm guessing you want something more like this:
    periods = location['Period']
    if hasattr(periods, "keys"):
        periods = list((periods,))
    for period in periods:
        reps = period['Rep']
        if hasattr(reps, "keys"):
            reps = list((reps,))           
        for rep in reps:
            data = Data()
            data.data_type = period['type']
            data.data_date = period['value']
            data.collection_time = rep['$']
            data.wind_direction = rep.get('D', "")
            data.pressure = rep.get('P',"")
            data.wind_speed = rep.get('S',"")
            data.temperature = rep.get('T',"")
            data.visibility = rep.get('V',"")
            data.weather_type = rep.get('W',"")
            data.wind_gust = rep.get('G',"")
            data.pressure_tendency = rep.get('Pt',"")
            data.dew_point = rep.get('C',"")
            data.screen_relative_humidity = rep.get('H',"")

Open in new window

0
 

Author Comment

by:crompnk
ID: 40533675
Hi,
Thanks again, I made the changes and the script runs without errors, however it only exports the last rep record in each location object and not all rep records in each location>>period array.
Do I still need the class Period() ?

Here is the Python script so far:

#!/usr/bin/python
 
#-------------------------------------------------------------------------------------------
#Assemble a CSV file from the Hourly Observation Service from the Met Office 
#DataPoint API.
 
#It does an API request,
#parses the data as JSON, then turns that into a set of data model objects, those
#are them flattened and written down as a CSV file.

#Known Issues:
 
#* Some of the data isn't filled in (data date, data type, etc).
#* Error handling just sets the field to blank.
#* There's only real error handling on the observation data.
#-------------------------------------------------------------------------------------------
 
import requests
import json
import csv
 
API_KEY = ""
#* Example: to obtain observations for every location in the UK at all available times in JSON format:
URL = "http://datapoint.metoffice.gov.uk/public/data/val/wxobs/all/json/all?res=hourly&key=%s" % (API_KEY)
#* Example: to obtain observations for every location in the UK at a particular time in JSON format:
#URL = "http://datapoint.metoffice.gov.uk/public/data/val/wxobs/all/json/all?res=hourly&time=2014-12-29T23Z&key=%s" % (API_KEY)
#* Example: to obtain observations for a specified location at all available times in JSON format:
#URL = "http://datapoint.metoffice.gov.uk/public/data/val/wxobs/all/json/3002?res=hourly&key=%s" % (API_KEY)

OUTPUT_FILE = "C:\Temp\example_data.csv"
 
def remove_key(d, key):
#-------------------------------------------------------------------------------------------
    #Remove a key from a dictionary.
    #Return a copy of the dict.
#-------------------------------------------------------------------------------------------
    r = dict(d)
    del r[key]
    return r
 
def flatten_location(loc):
#-------------------------------------------------------------------------------------------
    #Flatten a Location instance in preparation for writing to a CSV.
#-------------------------------------------------------------------------------------------
    location = loc.__dict__
    location_info = remove_key(location, 'data')
    location_data = []
 
    for data in location['data']:
        flat_data = data.__dict__
        flat = dict(list(location_info.items()) + list(flat_data.items()))
        location_data.append(flat)

    return location_data
 
class Location():
#-------------------------------------------------------------------------------------------
    #Data Model for locations returned from DataPoint.
#-------------------------------------------------------------------------------------------
    def __init__(self):
        self.location_id = ""
        self.lat = ""
        self.lon = ""
        self.elevation = ""
        self.name = ""
        self.country = ""
        self.continent = ""
        self.data = []
 
    def __repr__(self):
        return "<Location: %s>" % (self.name)

class Period():
#-------------------------------------------------------------------------------------------
    #Data Model for period data returned from DataPoint.
#-------------------------------------------------------------------------------------------
    def __init__(self):
        self.data_date = ""
        self.data_type = ""
 
    def __repr__(self):
        return "<Period: %s>" % (self.name)

class Data():
#-------------------------------------------------------------------------------------------
    #Data Model for collected data returned from DataPoint
#-------------------------------------------------------------------------------------------
    def __init__(self):
        self.collection_time = ""
        self.wind_direction = ""
        self.pressure = ""
        self.wind_speed = ""
        self.temperature = ""
        self.visibility = ""
        self.weather_type = ""
        self.wind_gust = ""
        self.pressure_tendency = ""
        self.dew_point = ""
        self.screen_relative_humidity = ""
        
    def __repr__(self):
        return "<Data: %s>" % (self.collection_time)
 
# fetch data, parse json
r = requests.get(URL)
j = r.json()
 
# get a collection of locations
locations = j['SiteRep']['DV']['Location']
parsed_locations = []
 
for location in locations:
    # turn the locations into Location objects
    loc = Location()
    loc.location_id = location['i']
    loc.lat = location['lat']
    loc.lon = location['lon']
    loc.elevation = location['elevation']
    loc.name = location['name']
    loc.country = location['country']
    loc.continent = location['continent']

    # turn the location's data into Data objects
    periods = location['Period']
    if hasattr(periods, "keys"):
        periods = list((periods,))
    for period in periods:
        reps = period['Rep']
        if hasattr(reps, "keys"):
            reps = list((reps,))           
        for rep in reps:
            data = Data()
            data.data_type = period['type']
            data.data_date = period['value']
            data.collection_time = rep['$']
            data.wind_direction = rep.get('D', "")
            data.pressure = rep.get('P',"")
            data.wind_speed = rep.get('S',"")
            data.temperature = rep.get('T',"")
            data.visibility = rep.get('V',"")
            data.weather_type = rep.get('W',"")
            data.wind_gust = rep.get('G',"")
            data.pressure_tendency = rep.get('Pt',"")
            data.dew_point = rep.get('C',"")
            data.screen_relative_humidity = rep.get('H',"")
    loc.data.append(data)    
 
    # hold onto a flattened version of the location
    parsed_locations.extend(flatten_location(loc))
 
# write the csv
with open(OUTPUT_FILE, "wt") as f:
    writer = csv.DictWriter(f, parsed_locations[0].keys())
    writer.writeheader()
    for d in parsed_locations:
        writer.writerow(d)

Open in new window


Here is how the json looks:

{  
   "SiteRep":{  
      "Wx":{  
         "Param":[  
            {  
               "name":"G",
               "units":"mph",
               "$":"Wind Gust"
            },
            {  
               "name":"T",
               "units":"C",
               "$":"Temperature"
            },
            {  
               "name":"V",
               "units":"m",
               "$":"Visibility"
            },
            {  
               "name":"D",
               "units":"compass",
               "$":"Wind Direction"
            },
            {  
               "name":"S",
               "units":"mph",
               "$":"Wind Speed"
            },
            {  
               "name":"W",
               "units":"",
               "$":"Weather Type"
            },
            {  
               "name":"P",
               "units":"hpa",
               "$":"Pressure"
            },
            {  
               "name":"Pt",
               "units":"Pa\/s",
               "$":"Pressure Tendency"
            },
            {  
               "name":"Dp",
               "units":"C",
               "$":"Dew Point"
            },
            {  
               "name":"H",
               "units":"%",
               "$":"Screen Relative Humidity"
            }
         ]
      },
      "DV":{  
         "dataDate":"2015-01-06T15:00:00Z",
         "type":"Obs",
         "Location":[  
            {  
               "i":"3002",
               "lat":"60.749",
               "lon":"-0.854",
               "name":"BALTASOUND",
               "country":"SCOTLAND",
               "continent":"EUROPE",
               "elevation":"15.0",
               "Period":[  
                  {  
                     "type":"Day",
                     "value":"2015-01-05Z",
                     "Rep":[  
                        {  
                           "D":"S",
                           "H":"90.9",
                           "P":"1012",
                           "S":"16",
                           "T":"8.3",
                           "V":"15000",
                           "W":"2",
                           "Pt":"F",
                           "Dp":"6.9",
                           "$":"900"
                        },
                        {  
                           "D":"S",
                           "H":"91.5",
                           "P":"1012",
                           "S":"16",
                           "T":"8.5",
                           "V":"17000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"7.2",
                           "$":"960"
                        },
                        {  
                           "D":"SSW",
                           "H":"89.6",
                           "P":"1012",
                           "S":"17",
                           "T":"8.5",
                           "V":"15000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.9",
                           "$":"1020"
                        },
                        {  
                           "D":"SSW",
                           "H":"89.6",
                           "P":"1011",
                           "S":"16",
                           "T":"8.4",
                           "V":"14000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.8",
                           "$":"1080"
                        },
                        {  
                           "D":"SSW",
                           "H":"87.0",
                           "P":"1011",
                           "S":"11",
                           "T":"8.4",
                           "V":"16000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.4",
                           "$":"1140"
                        },
                        {  
                           "D":"S",
                           "H":"91.5",
                           "P":"1011",
                           "S":"15",
                           "T":"8.2",
                           "V":"11000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.9",
                           "$":"1200"
                        },
                        {  
                           "D":"S",
                           "H":"90.1",
                           "P":"1010",
                           "S":"18",
                           "T":"8.4",
                           "V":"14000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.9",
                           "$":"1260"
                        },
                        {  
                           "D":"SSW",
                           "H":"90.2",
                           "P":"1010",
                           "S":"17",
                           "T":"8.3",
                           "V":"12000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.8",
                           "$":"1320"
                        },
                        {  
                           "D":"SSW",
                           "H":"88.9",
                           "P":"1009",
                           "S":"16",
                           "T":"8.4",
                           "V":"11000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.7",
                           "$":"1380"
                        }
                     ]
                  },
                  {  
                     "type":"Day",
                     "value":"2015-01-06Z",
                     "Rep":[  
                        {  
                           "D":"S",
                           "H":"90.2",
                           "P":"1008",
                           "S":"15",
                           "T":"8.4",
                           "V":"15000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.9",
                           "$":"0"
                        },
                        {  
                           "D":"SSW",
                           "H":"90.9",
                           "P":"1007",
                           "S":"15",
                           "T":"8.1",
                           "V":"13000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.7",
                           "$":"60"
                        },
                        {  
                           "D":"SSW",
                           "H":"92.7",
                           "P":"1006",
                           "S":"14",
                           "T":"8.0",
                           "V":"12000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.9",
                           "$":"120"
                        },
                        {  
                           "D":"S",
                           "H":"93.3",
                           "P":"1005",
                           "S":"13",
                           "T":"8.1",
                           "V":"13000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"7.1",
                           "$":"180"
                        },
                        {  
                           "D":"S",
                           "H":"93.4",
                           "P":"1004",
                           "S":"13",
                           "T":"8.2",
                           "V":"11000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"7.2",
                           "$":"240"
                        },
                        {  
                           "D":"S",
                           "H":"94.0",
                           "P":"1003",
                           "S":"15",
                           "T":"8.4",
                           "V":"9000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"7.5",
                           "$":"300"
                        },
                        {  
                           "D":"SSW",
                           "H":"94.0",
                           "P":"1002",
                           "S":"17",
                           "T":"8.4",
                           "V":"10000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"7.5",
                           "$":"360"
                        },
                        {  
                           "D":"S",
                           "H":"94.7",
                           "P":"1002",
                           "S":"13",
                           "T":"8.4",
                           "V":"9000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"7.6",
                           "$":"420"
                        },
                        {  
                           "D":"S",
                           "H":"94.7",
                           "P":"1001",
                           "S":"15",
                           "T":"8.4",
                           "V":"9000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"7.6",
                           "$":"480"
                        },
                        {  
                           "D":"S",
                           "H":"95.4",
                           "P":"1000",
                           "S":"16",
                           "T":"8.3",
                           "V":"10000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"7.6",
                           "$":"540"
                        },
                        {  
                           "D":"NW",
                           "H":"95.3",
                           "P":"1000",
                           "S":"14",
                           "T":"5.7",
                           "V":"11000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"5.0",
                           "$":"600"
                        },
                        {  
                           "D":"NW",
                           "H":"91.9",
                           "P":"1001",
                           "S":"17",
                           "T":"4.7",
                           "V":"8000",
                           "W":"14",
                           "Pt":"R",
                           "Dp":"3.5",
                           "$":"660"
                        },
                        {  
                           "D":"WNW",
                           "H":"90.6",
                           "P":"1001",
                           "S":"17",
                           "T":"4.9",
                           "V":"9000",
                           "W":"15",
                           "Pt":"R",
                           "Dp":"3.5",
                           "$":"720"
                        },
                        {  
                           "D":"NW",
                           "H":"89.4",
                           "P":"1001",
                           "S":"16",
                           "T":"4.9",
                           "V":"16000",
                           "W":"12",
                           "Pt":"R",
                           "Dp":"3.3",
                           "$":"780"
                        },
                        {  
                           "D":"NW",
                           "H":"85.6",
                           "P":"1002",
                           "S":"17",
                           "T":"5.3",
                           "V":"50000",
                           "W":"8",
                           "Pt":"R",
                           "Dp":"3.1",
                           "$":"840"
                        },
                        {  
                           "D":"NW",
                           "H":"86.2",
                           "P":"1003",
                           "S":"14",
                           "T":"5.3",
                           "V":"28000",
                           "W":"7",
                           "Pt":"R",
                           "Dp":"3.2",
                           "$":"900"
                        }
                     ]
                  }
               ]
            },
            {  
               "i":"3005",
               "lat":"60.139",
               "lon":"-1.183",
               "name":"LERWICK (S. SCREEN)",
               "country":"SCOTLAND",
               "continent":"EUROPE",
               "elevation":"82.0",
               "Period":[  
                  {  
                     "type":"Day",
                     "value":"2015-01-05Z",
                     "Rep":[  
                        {  
                           "D":"S",
                           "H":"89.5",
                           "P":"1013",
                           "S":"11",
                           "T":"8.0",
                           "V":"21000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.4",
                           "$":"900"
                        },
                        {  
                           "D":"SW",
                           "H":"86.0",
                           "P":"1012",
                           "S":"21",
                           "T":"8.7",
                           "V":"23000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.5",
                           "$":"960"
                        },
                        {  
                           "D":"SW",
                           "G":"30",
                           "H":"85.9",
                           "P":"1012",
                           "S":"24",
                           "T":"8.5",
                           "V":"26000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.3",
                           "$":"1020"
                        },
                        {  
                           "D":"SW",
                           "G":"32",
                           "H":"87.8",
                           "P":"1012",
                           "S":"25",
                           "T":"8.3",
                           "V":"18000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.4",
                           "$":"1080"
                        },
                        {  
                           "D":"S",
                           "G":"32",
                           "H":"86.5",
                           "P":"1011",
                           "S":"14",
                           "T":"7.9",
                           "V":"25000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"5.8",
                           "$":"1140"
                        },
                        {  
                           "D":"S",
                           "H":"90.7",
                           "P":"1011",
                           "S":"15",
                           "T":"7.6",
                           "V":"22000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.2",
                           "$":"1200"
                        },
                        {  
                           "D":"SSW",
                           "H":"90.2",
                           "P":"1010",
                           "S":"15",
                           "T":"7.8",
                           "V":"25000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.3",
                           "$":"1260"
                        },
                        {  
                           "D":"SSW",
                           "H":"83.1",
                           "P":"1010",
                           "S":"18",
                           "T":"8.5",
                           "V":"24000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"5.8",
                           "$":"1320"
                        },
                        {  
                           "D":"SSW",
                           "H":"86.5",
                           "P":"1009",
                           "S":"16",
                           "T":"8.0",
                           "V":"20000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"5.9",
                           "$":"1380"
                        }
                     ]
                  },
                  {  
                     "type":"Day",
                     "value":"2015-01-06Z",
                     "Rep":[  
                        {  
                           "D":"SSW",
                           "H":"87.1",
                           "P":"1008",
                           "S":"14",
                           "T":"8.2",
                           "V":"20000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.2",
                           "$":"0"
                        },
                        {  
                           "D":"S",
                           "H":"90.2",
                           "P":"1007",
                           "S":"14",
                           "T":"8.0",
                           "V":"19000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.5",
                           "$":"60"
                        },
                        {  
                           "D":"S",
                           "H":"92.0",
                           "P":"1006",
                           "S":"15",
                           "T":"7.9",
                           "V":"16000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.7",
                           "$":"120"
                        },
                        {  
                           "D":"S",
                           "H":"92.7",
                           "P":"1005",
                           "S":"15",
                           "T":"7.9",
                           "V":"15000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.8",
                           "$":"180"
                        },
                        {  
                           "D":"W",
                           "H":"96.0",
                           "P":"1005",
                           "S":"13",
                           "T":"7.6",
                           "V":"15000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"7.0",
                           "$":"240"
                        },
                        {  
                           "D":"S",
                           "H":"94.7",
                           "P":"1003",
                           "S":"18",
                           "T":"8.0",
                           "V":"11000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"7.2",
                           "$":"300"
                        },
                        {  
                           "D":"S",
                           "H":"94.1",
                           "P":"1002",
                           "S":"17",
                           "T":"8.1",
                           "V":"14000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"7.2",
                           "$":"360"
                        },
                        {  
                           "D":"SSW",
                           "H":"92.7",
                           "P":"1002",
                           "S":"19",
                           "T":"8.0",
                           "V":"10000",
                           "W":"9",
                           "Pt":"F",
                           "Dp":"6.9",
                           "$":"420"
                        },
                        {  
                           "D":"SSW",
                           "G":"30",
                           "H":"95.3",
                           "P":"1001",
                           "S":"24",
                           "T":"7.9",
                           "V":"12000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"7.2",
                           "$":"480"
                        },
                        {  
                           "D":"SW",
                           "G":"40",
                           "H":"92.7",
                           "P":"1001",
                           "S":"24",
                           "T":"7.4",
                           "V":"15000",
                           "W":"9",
                           "Pt":"F",
                           "Dp":"6.3",
                           "$":"540"
                        },
                        {  
                           "D":"NW",
                           "G":"30",
                           "H":"94.5",
                           "P":"1001",
                           "S":"21",
                           "T":"5.1",
                           "V":"7000",
                           "W":"12",
                           "Pt":"F",
                           "Dp":"4.3",
                           "$":"600"
                        },
                        {  
                           "D":"NW",
                           "H":"93.2",
                           "P":"1002",
                           "S":"17",
                           "T":"4.2",
                           "V":"9000",
                           "W":"15",
                           "Pt":"R",
                           "Dp":"3.2",
                           "$":"660"
                        },
                        {  
                           "D":"WNW",
                           "H":"91.8",
                           "P":"1002",
                           "S":"16",
                           "T":"4.5",
                           "V":"15000",
                           "W":"15",
                           "Pt":"R",
                           "Dp":"3.3",
                           "$":"720"
                        },
                        {  
                           "D":"NW",
                           "H":"89.2",
                           "P":"1002",
                           "S":"18",
                           "T":"4.2",
                           "V":"20000",
                           "W":"7",
                           "Pt":"R",
                           "Dp":"2.6",
                           "$":"780"
                        },
                        {  
                           "D":"W",
                           "H":"85.4",
                           "P":"1003",
                           "S":"13",
                           "T":"4.4",
                           "V":"30000",
                           "W":"7",
                           "Pt":"R",
                           "Dp":"2.2",
                           "$":"840"
                        },
                        {  
                           "D":"WNW",
                           "H":"79.7",
                           "P":"1004",
                           "S":"11",
                           "T":"4.9",
                           "V":"30000",
                           "W":"2",
                           "Pt":"R",
                           "Dp":"1.7",
                           "$":"900"
                        }
                     ]
                  }
               ]
            },
            {  
               "i":"3006",
               "lat":"60.447",
               "lon":"-1.277",
               "name":"SELLA NESS",
               "country":"SCOTLAND",
               "continent":"EUROPE",
               "elevation":"7.0",
               "Period":[  
                  {  
                     "type":"Day",
                     "value":"2015-01-05Z",
                     "Rep":[  
                        {  
                           "D":"SW",
                           "S":"17",
                           "$":"900"
                        },
                        {  
                           "D":"SW",
                           "S":"17",
                           "$":"960"
                        },
                        {  
                           "D":"SSW",
                           "S":"17",
                           "$":"1020"
                        },
                        {  
                           "D":"SSW",
                           "S":"19",
                           "$":"1080"
                        },
                        {  
                           "D":"SSW",
                           "S":"22",
                           "$":"1140"
                        },
                        {  
                           "D":"SSW",
                           "S":"23",
                           "$":"1200"
                        },
                        {  
                           "D":"SSW",
                           "G":"30",
                           "S":"23",
                           "$":"1260"
                        },
                        {  
                           "D":"SSW",
                           "G":"30",
                           "S":"23",
                           "$":"1320"
                        },
                        {  
                           "D":"SSW",
                           "G":"29",
                           "S":"19",
                           "$":"1380"
                        }
                     ]
                  },
                  {  
                     "type":"Day",
                     "value":"2015-01-06Z",
                     "Rep":[  
                        {  
                           "D":"SW",
                           "S":"19",
                           "$":"0"
                        },
                        {  
                           "D":"SSW",
                           "G":"29",
                           "S":"21",
                           "$":"60"
                        },
                        {  
                           "D":"SSW",
                           "S":"17",
                           "$":"120"
                        },
                        {  
                           "D":"SSW",
                           "S":"17",
                           "$":"180"
                        },
                        {  
                           "D":"SSW",
                           "S":"17",
                           "$":"240"
                        },
                        {  
                           "D":"SSW",
                           "S":"21",
                           "$":"300"
                        },
                        {  
                           "D":"SSW",
                           "G":"29",
                           "S":"19",
                           "$":"360"
                        },
                        {  
                           "D":"SSW",
                           "S":"19",
                           "$":"420"
                        },
                        {  
                           "D":"SSW",
                           "S":"21",
                           "$":"480"
                        },
                        {  
                           "D":"NW",
                           "S":"16",
                           "$":"540"
                        },
                        {  
                           "D":"NW",
                           "S":"19",
                           "$":"600"
                        },
                        {  
                           "D":"WNW",
                           "S":"16",
                           "$":"660"
                        },
                        {  
                           "D":"WNW",
                           "S":"17",
                           "$":"720"
                        },
                        {  
                           "D":"NNW",
                           "G":"29",
                           "S":"8",
                           "$":"780"
                        },
                        {  
                           "D":"WNW",
                           "S":"15",
                           "$":"840"
                        },
                        {  
                           "D":"WNW",
                           "S":"15",
                           "$":"900"
                        }
                     ]
                  }
               ]
            },
            {  
               "i":"3017",
               "lat":"58.954",
               "lon":"-2.9",
               "name":"KIRKWALL",
               "country":"SCOTLAND",
               "continent":"EUROPE",
               "elevation":"26.0",
               "Period":[  
                  {  
                     "type":"Day",
                     "value":"2015-01-05Z",
                     "Rep":[  
                        {  
                           "D":"SSW",
                           "H":"89.5",
                           "P":"1013",
                           "S":"13",
                           "T":"7.8",
                           "V":"19000",
                           "W":"3",
                           "Pt":"F",
                           "Dp":"6.2",
                           "$":"900"
                        },
                        {  
                           "D":"SSW",
                           "H":"88.3",
                           "P":"1013",
                           "S":"11",
                           "T":"7.8",
                           "V":"23000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.0",
                           "$":"960"
                        },
                        {  
                           "D":"SSW",
                           "H":"89.5",
                           "P":"1013",
                           "S":"14",
                           "T":"7.5",
                           "V":"20000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"5.9",
                           "$":"1020"
                        },
                        {  
                           "D":"S",
                           "H":"90.8",
                           "P":"1012",
                           "S":"16",
                           "T":"7.7",
                           "V":"20000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.3",
                           "$":"1080"
                        },
                        {  
                           "D":"S",
                           "H":"90.7",
                           "P":"1011",
                           "S":"16",
                           "T":"7.8",
                           "V":"15000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.4",
                           "$":"1140"
                        },
                        {  
                           "D":"S",
                           "H":"90.2",
                           "P":"1011",
                           "S":"16",
                           "T":"7.9",
                           "V":"15000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.4",
                           "$":"1200"
                        },
                        {  
                           "D":"S",
                           "H":"89.0",
                           "P":"1010",
                           "S":"14",
                           "T":"8.2",
                           "V":"17000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.5",
                           "$":"1260"
                        },
                        {  
                           "D":"S",
                           "H":"89.0",
                           "P":"1010",
                           "S":"16",
                           "T":"8.1",
                           "V":"17000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.4",
                           "$":"1320"
                        },
                        {  
                           "D":"SSW",
                           "H":"87.7",
                           "P":"1009",
                           "S":"15",
                           "T":"8.0",
                           "V":"35000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.1",
                           "$":"1380"
                        }
                     ]
                  },
                  {  
                     "type":"Day",
                     "value":"2015-01-06Z",
                     "Rep":[  
                        {  
                           "D":"S",
                           "H":"90.1",
                           "P":"1008",
                           "S":"17",
                           "T":"7.4",
                           "V":"19000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"5.9",
                           "$":"0"
                        },
                        {  
                           "D":"SSW",
                           "H":"89.6",
                           "P":"1007",
                           "S":"15",
                           "T":"8.0",
                           "V":"14000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.4",
                           "$":"60"
                        },
                        {  
                           "D":"SSW",
                           "H":"88.3",
                           "P":"1006",
                           "S":"13",
                           "T":"7.9",
                           "V":"19000",
                           "W":"7",
                           "Pt":"F",
                           "Dp":"6.1",
                           "$":"120"
                        },
                        {  
                           "D":"S",
                           "H":"91.5",
                           "P":"1005",
                           "S":"16",
                           "T":"7.9",
                           "V":"13000",
                           "W":"2",
                           "Pt":"F",
                           "Dp":"6.6",
                           "$":"180"
                        },
                        {  
                           "D":"S",
                           "H":"92.7",
                           "P":"1004",
                           "S":"16",
                           "T":"7.7",
                           "V":"13000",
                           "W":"2",
                           "Pt":"F",
                           "Dp":"6.6",
                           "$":"240"
                        },
                        {  
                           "D":"SSW",
                           "H":"90.8",
                           "P":"1003",
                           "S":"17",
                           "T":"7.9",
                           "V":"27000",
                           "W":"2",
                           "Pt":"F",
                           "Dp":"6.5",
                           "$":"300"
                        },
                        {  
                           "D":"SSW",
                           "H":"92.7",
                           "P":"1002",
                           "S":"17",
                           "T":"7.9",
                           "V":"13000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"6.8",
                           "$":"360"
                        },
                        {  
                           "D":"NW",
                           "H":"93.2",
                           "P":"1003",
                           "S":"14",
                           "T":"5.2",
                           "V":"30000",
                           "W":"8",
                           "Pt":"F",
                           "Dp":"4.2",
                           "$":"420"
                        },
                        {  
                           "D":"WNW",
                           "H":"92.6",
                           "P":"1004",
                           "S":"10",
                           "T":"4.8",
                           "V":"10000",
                           "W":"15",
                           "Pt":"R",
                           "Dp":"3.7",
                           "$":"480"
                        },
                        {  
                           "D":"WNW",
                           "H":"93.9",
                           "P":"1004",
                           "S":"9",
                           "T":"4.7",
                           "V":"8000",
                           "W":"12",
                           "Pt":"R",
                           "Dp":"3.8",
                           "$":"540"
                        },
                        {  
                           "D":"WNW",
                           "H":"91.3",
                           "P":"1004",
                           "S":"10",
                           "T":"4.8",
                           "V":"16000",
                           "W":"12",
                           "Pt":"R",
                           "Dp":"3.5",
                           "$":"600"
                        },
                        {  
                           "D":"NW",
                           "H":"83.3",
                           "P":"1005",
                           "S":"15",
                           "T":"4.8",
                           "V":"50000",
                           "W":"12",
                           "Pt":"R",
                           "Dp":"2.2",
                           "$":"660"
                        },
                        {  
                           "D":"NW",
                           "H":"86.8",
                           "P":"1005",
                           "S":"9",
                           "T":"4.9",
                           "V":"7000",
                           "W":"10",
                           "Pt":"R",
                           "Dp":"2.9",
                           "$":"720"
                        },
                        {  
                           "D":"NNW",
                           "H":"91.2",
                           "P":"1006",
                           "S":"13",
                           "T":"3.7",
                           "V":"8000",
                           "W":"11",
                           "Pt":"R",
                           "Dp":"2.4",
                           "$":"780"
                        },
                        {  
                           "D":"W",
                           "H":"89.3",
                           "P":"1006",
                           "S":"5",
                           "T":"3.8",
                           "V":"35000",
                           "W":"7",
                           "Pt":"R",
                           "Dp":"2.2",
                           "$":"840"
                        },
                        {  
                           "D":"W",
                           "H":"89.4",
                           "P":"1007",
                           "S":"15",
                           "T":"4.9",
                           "V":"18000",
                           "W":"10",
                           "Pt":"R",
                           "Dp":"3.3",
                           "$":"900"
                        }
                     ]
                  }
               ]
            }
         ]
      }
   }
}

Open in new window

0

Featured Post

Ready to get started with anonymous questions?

It's easy! Check out this step-by-step guide for asking an anonymous question on Experts Exchange.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Plenty of writing has gone on the web trying to compare Python with other competitive programming languages and vice versa. However, not much has been put into a wholistic perspective. This article should help you decide whether to adopt Python as a…
Introduction On September 29, 2012, the Python 3.3.0 was released; nothing extremely unexpected,  yet another, better version of Python. But, if you work in Microsoft Windows, you should notice that the Python Launcher for Windows was introduced wi…
Learn the basics of lists in Python. Lists, as their name suggests, are a means for ordering and storing values. : Lists are declared using brackets; for example: t = [1, 2, 3]: Lists may contain a mix of data types; for example: t = ['string', 1, T…
Learn the basics of if, else, and elif statements in Python 2.7. Use "if" statements to test a specified condition.: The structure of an if statement is as follows: (CODE) Use "else" statements to allow the execution of an alternative, if the …

632 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question