Solved

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

Posted on 2014-12-29
5
4,070 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
  • 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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

This article will show the steps for installing Python on Ubuntu Operating System. I have created a virtual machine with Ubuntu Operating system 8.10 and this installing process also works with upgraded version of Ubuntu OS. For installing Py…
The purpose of this article is to demonstrate how we can use conditional statements using Python.
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 while and for loops in Python.  while loops are used for testing while, or until, a condition is met: The structure of a while loop is as follows:     while <condition>:         do something         repeate: The break statement m…

747 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now