Page 2: Writing to CSV

In this section we will demonstrate how to write data to a csv file.
    
def write_to_csv(json_data, output):
    header='name,description,latitude,longitude,agency'
    with open(output, 'w') as wfile:
        wfile.write(header)
        for li in json_data['values']:

            row = ','.join([str(v) for v in make_location_row(li)])
            wfile.write(f'{row}\n')

def make_location_row(location)
    lat = location['location']['coordinates'][1]
    lon = location['location']['coordinates'][0]
    return [location['name'], location['description'], lat, lon, location['properties']['agency']]

    
Used in conjunction with our get_locations function our complete script might look something like
    

    import requests
    def get_locations(agency=None):

        url = "https://st2.newmexicowaterdata.org/FROST-Server/v1.1/Locations"

        if agency:
            url = f"{url}?$filter=properties/agency eq '{agency}'"
        resp = requests.get(url)
        if resp.status_code==200:
            return resp.json()

    def write_to_csv(json_data, output):
        header='name,description,latitude,longitude,agency'
        with open(output, 'w') as wfile:
            wfile.write(header)
            for li in json_data['values']:

                row = ','.join([str(v) for v in make_location_row(li)])
                wfile.write(f'{row}\n')

    def make_location_row(location)
        lat = location['location']['coordinates'][1]
        lon = location['location']['coordinates'][0]
        return [location['name'], location['description'], lat, lon, location['properties']['agency']]

    if __name__=='__main__':
        locations = get_locations(agency='EBID')
        write_to_csv(locations, 'EBID_locations.csv')
    
-->