首页 > 解决方案 > 黑暗天空 JSON 到 CSV 转换

问题描述

我正在尝试将黑暗的天空 JSON 转换为 CSV。

我已经设法让 JSON 加载,并使用以下命令给我第一天的第一个时间段的值:

##%% Load libraries
import sys
import os
import json
import csv




#%% Get file
# Move to correct directory
os.chdir('C:/GitWorkspace/apidumps\darksky')

# Load data from file
with open('Fraser Ave - Inverkeithing KY11 1EJ.json') as f:
    data = json.load(f)

 
# Get fields from JSON data
date = data["2020-01-01"]

# Get daily data from JSON data
daily_data = data["2020-01-01"]["hourly"]["data"][0]
    
# Get fields from daily data
time = daily_data['time']
summary = daily_data['summary']
icon = daily_data['icon']
precipIntensity = daily_data['precipIntensity']
precipProbability = daily_data['precipProbability']
temperature = daily_data['temperature']
apparentTemperature = daily_data['apparentTemperature']
dewPoint = daily_data['dewPoint']
humidity = daily_data["humidity"]
pressure = daily_data['pressure']
windSpeed = daily_data['windSpeed']
windGust = daily_data['windGust']
windBearing = daily_data['windBearing']
cloudCover = daily_data['cloudCover']
uvIndex = daily_data['uvIndex']
visibility = daily_data["visibility"]
ozone = daily_data["ozone"]

我在这里附上了一张 JSON 文件格式的图片:

JSON

我的问题是:

  1. 如何获取当天所有时间的所有数据?
  2. 我如何让它在第 + 1 天循环回来?
  3. 然后如何将所有这些放入同一个 CSV 文件中?

抱歉,如果这非常简单 - 我还在学习

标签: pythonjsoncsvexport-to-csv

解决方案


#!/bin/python3
from functools import reduce
import operator
import csv

# Load data from file
with open('Fraser Ave - Inverkeithing KY11 1EJ.json') as f:
    data = json.load(f)

# Get all dates hourly data from JSON data
toCSV = [date_data['hourly']['data'] for date, date_data in data.items()]

# convert to single list of dict
toCSV = reduce(operator.add, toCSV)

# get header names from first dict
keys = toCSV[0].keys()

# optionaly save as csv file
with open('sample.csv', 'w', newline='')  as output_file:
    dict_writer = csv.DictWriter(output_file, keys)
    dict_writer.writeheader()
    dict_writer.writerows(toCSV)

推荐阅读