Python抓取JSON转换为CSV

Python抓取JSON转换为CSV,python,json,csv,Python,Json,Csv,我对python非常陌生,这可能是一个可怕的问题,但这里是: 我正试图从一个特定的网站上抓取数据,并将这些数据转换成CSV。我已经设法得到一个工作的“刮刀”,并保存在我的电脑上的文件。然而,当我再次尝试将JSON加载到python中时,会出现各种各样的错误。我相信其中一个错误是由于我在一个文件中添加了多个JSON数组,而JSON.load()只能加载一个JSON(据我所知) 长话短说:有没有人能给我指引正确的方向,告诉我如何抓取这些数据并获得一个可读的CSV 请在下面找到我的代码 import

我对python非常陌生,这可能是一个可怕的问题,但这里是:

我正试图从一个特定的网站上抓取数据,并将这些数据转换成CSV。我已经设法得到一个工作的“刮刀”,并保存在我的电脑上的文件。然而,当我再次尝试将JSON加载到python中时,会出现各种各样的错误。我相信其中一个错误是由于我在一个文件中添加了多个JSON数组,而
JSON.load()
只能加载一个JSON(据我所知)

长话短说:有没有人能给我指引正确的方向,告诉我如何抓取这些数据并获得一个可读的CSV

请在下面找到我的代码

import urllib.request
import urllib.parse
import datetime
import time
import json
import csv


def grabData():
    startdate = datetime.date(2015,2,1)
    startdate += datetime.timedelta(days=1)
    datalist = []
    for i in range(2):

        unixtime = time.mktime(startdate.timetuple())
        print(unixtime)

        url = 'https://api.*************/34.700869,135.503755,'+str(int(unixtime))+'?units=si'
        print(url)
        webURL = urllib.request.urlopen(url)
        data = webURL.read()
        print(data)
        encoding = webURL.info().get_content_charset('utf-8')
        json.loads(data.decode(encoding))
        datalist.append(data.decode())

        startdate += datetime.timedelta(days=1)


    text = datalist
    saveFile = open('osakatest.json','a')
    saveFile.write(str(text))
    saveFile.close()


grabData()
这是我得到的输出的一个片段

[{"latitude":34.700869,"longitude":135.503755,"timezone":"Asia/Tokyo","offset":9,"currently":{"time":1422831600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":3.51,"apparentTemperature":1.37,"dewPoint":-2.53,"humidity":0.65,"windSpeed":2.24,"windBearing":294,"visibility":11.76,"pressure":1028.66},"hourly":{"summary":"Clear throughout the day.","icon":"clear-day","data":[{"time":1422802800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.94,"apparentTemperature":1.07,"dewPoint":-2.09,"humidity":0.7,"windSpeed":1.91,"windBearing":295,"visibility":14.52,"pressure":1029.11},{"time":1422806400,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.65,"dewPoint":-2.12,"humidity":0.7,"windSpeed":2.23,"windBearing":292,"visibility":14.52,"pressure":1028.7},{"time":1422810000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.78,"dewPoint":-2.17,"humidity":0.69,"windSpeed":2.11,"windBearing":270,"visibility":14.16,"pressure":1028.52},{"time":1422813600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.47,"dewPoint":-2.12,"humidity":0.7,"windSpeed":2.36,"windBearing":282,"visibility":15.77,"cloudCover":0.38,"pressure":1028.25},{"time":1422817200,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.65,"dewPoint":-2.13,"humidity":0.7,"windSpeed":2.19,"windBearing":285,"visibility":14.52,"pressure":1028.16},{"time":1422820800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.56,"dewPoint":-1.72,"humidity":0.72,"windSpeed":2.32,"windBearing":301,"visibility":12.41,"pressure":1028.21},{"time":1422824400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.55,"dewPoint":-1.82,"humidity":0.71,"windSpeed":2.28,"windBearing":295,"visibility":14.95,"cloudCover":0.75,"pressure":1028.25},{"time":1422828000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.97,"apparentTemperature":0.69,"dewPoint":-2.1,"humidity":0.69,"windSpeed":2.29,"windBearing":304,"visibility":12.41,"pressure":1028.55},{"time":1422831600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":3.51,"apparentTemperature":1.37,"dewPoint":-2.53,"humidity":0.65,"windSpeed":2.24,"windBearing":294,"visibility":11.76,"pressure":1028.66},{"time":1422835200,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipType":"rain","temperature":4.28,"apparentTemperature":2.64,"dewPoint":-3.14,"humidity":0.58,"windSpeed":1.89,"windBearing":285,"visibility":14.63,"cloudCover":0.74,"pressure":1028.55},{"time":1422838800,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":4.95,"apparentTemperature":2.61,"dewPoint":-3.67,"humidity":0.54,"windSpeed":2.79,"windBearing":301,"visibility":11.76,"pressure":1028.43},{"time":1422842400,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":6.13,"apparentTemperature":3.48,"dewPoint":-3.35,"humidity":0.51,"windSpeed":3.6,"windBearing":316,"visibility":11.76,"pressure":1027.97},{"time":1422846000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipType":"rain","temperature":5.99,"apparentTemperature":3.08,"dewPoint":-3.91,"humidity":0.49,"windSpeed":3.99,"windBearing":320,"visibility":14.45,"cloudCover":0.75,"pressure":1027.18},{"time":1422849600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":6.01,"apparentTemperature":3.01,"dewPoint":-3.74,"humidity":0.5,"windSpeed":4.17,"windBearing":329,"visibility":11.76,"pressure":1026.79},{"time":1422853200,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.94,"apparentTemperature":3.4,"dewPoint":-3.33,"humidity":0.51,"windSpeed":3.34,"windBearing":343,"visibility":11.76,"pressure":1026.69},{"time":1422856800,"summary":"Overcast","icon":"cloudy","precipType":"rain","temperature":5.78,"apparentTemperature":2.98,"dewPoint":-3.41,"humidity":0.52,"windSpeed":3.72,"windBearing":342,"visibility":14.71,"cloudCover":0.96,"pressure":1026.77},{"time":1422860400,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.74,"apparentTemperature":3.42,"dewPoint":-3.07,"humidity":0.53,"windSpeed":2.97,"windBearing":337,"visibility":11.72,"pressure":1026.87},{"time":1422864000,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.33,"apparentTemperature":2.86,"dewPoint":-2.67,"humidity":0.56,"windSpeed":3.07,"windBearing":329,"visibility":11.76,"pressure":1027.16},{"time":1422867600,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":4.43,"apparentTemperature":1.56,"dewPoint":-1.98,"humidity":0.63,"windSpeed":3.37,"windBearing":323,"visibility":14.45,"cloudCover":0.75,"pressure":1027.26},{"time":1422871200,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.36,"apparentTemperature":1.63,"dewPoint":-1.97,"humidity":0.63,"windSpeed":3.14,"windBearing":315,"visibility":11.76,"pressure":1027.55},{"time":1422874800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.25,"apparentTemperature":1.71,"dewPoint":-1.68,"humidity":0.65,"windSpeed":2.87,"windBearing":300,"visibility":12.41,"pressure":1027.77},{"time":1422878400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":4.27,"apparentTemperature":1.95,"dewPoint":-1.74,"humidity":0.65,"windSpeed":2.59,"windBearing":313,"visibility":15.8,"cloudCover":0.76,"pressure":1027.98},{"time":1422882000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.25,"apparentTemperature":1.78,"dewPoint":-1.73,"humidity":0.65,"windSpeed":2.77,"windBearing":297,"visibility":14.52,"pressure":1028.02},{"time":1422885600,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.24,"apparentTemperature":2.03,"dewPoint":-1.72,"humidity":0.65,"windSpeed":2.46,"windBearing":296,"visibility":14.52,"pressure":1028.12}]},"daily":{"data":[{"time":1422802800,"summary":"Clear throughout the day.","icon":"clear-day","sunriseTime":1422827846,"sunsetTime":1422865697,"moonPhase":0.44,"precipType":"rain","temperatureMin":2.84,"temperatureMinTime":1422824400,"temperatureMax":6.13,"temperatureMaxTime":1422842400,"apparentTemperatureMin":0.47,"apparentTemperatureMinTime":1422813600,"apparentTemperatureMax":3.48,"apparentTemperatureMaxTime":1422842400,"dewPoint":-2.49,"humidity":0.62,"windSpeed":2.62,"windBearing":310,"visibility":13.45,"cloudCover":0.73,"pressure":1027.9}]},"flags":{"sources":["isd"],"isd-stations":["476490-99999","476510-99999","476630-99999","476840-99999","477500-99999","477590-99999","477610-99999","477690-99999","477700-99999","477710-99999","477720-99999","477740-99999","477760-99999","477770-99999","477790-99999","477800-99999"],"units":"si"}}]
理想的CSV输出:

time,summary,icon,precipType,temperature,apparentTemperature,dewPoint,humidity,windSpeed,windBearing,visibility,pressure,cloudCover
1422802800,Clear,clear-night,rain,2.94,1.07,-2.09,0.7,1.91,295,14.52,1029.11,
1422806400,Clear,clear-night,rain,2.88,0.65,-2.12,0.7,2.23,292,14.52,1028.7,
1422810000,Clear,clear-night,rain,2.88,0.78,-2.17,0.69,2.11,270,14.16,1028.52,
1422813600,Partly Cloudy,partly-cloudy-night,rain,2.84,0.47,-2.12,0.7,2.36,282,15.77,1028.25,0.38

假设您知道如何从url中提取数据并将其放入变量中

json
转换为
csv
的最简单方法是使用万能的
pandas
库。 您可以将其放入
pandas
数据框中,然后将其直接转换为
csv

下面是一个示例代码:

import pandas as pd

json_obj = [{"latitude":34.700869,"longitude":135.503755,"timezone":"Asia/Tokyo","offset":9,"currently":{"time":1422831600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":3.51,"apparentTemperature":1.37,"dewPoint":-2.53,"humidity":0.65,"windSpeed":2.24,"windBearing":294,"visibility":11.76,"pressure":1028.66},"hourly":{"summary":"Clear throughout the day.","icon":"clear-day","data":[{"time":1422802800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.94,"apparentTemperature":1.07,"dewPoint":-2.09,"humidity":0.7,"windSpeed":1.91,"windBearing":295,"visibility":14.52,"pressure":1029.11},{"time":1422806400,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.65,"dewPoint":-2.12,"humidity":0.7,"windSpeed":2.23,"windBearing":292,"visibility":14.52,"pressure":1028.7},{"time":1422810000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.78,"dewPoint":-2.17,"humidity":0.69,"windSpeed":2.11,"windBearing":270,"visibility":14.16,"pressure":1028.52},{"time":1422813600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.47,"dewPoint":-2.12,"humidity":0.7,"windSpeed":2.36,"windBearing":282,"visibility":15.77,"cloudCover":0.38,"pressure":1028.25},{"time":1422817200,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.65,"dewPoint":-2.13,"humidity":0.7,"windSpeed":2.19,"windBearing":285,"visibility":14.52,"pressure":1028.16},{"time":1422820800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.56,"dewPoint":-1.72,"humidity":0.72,"windSpeed":2.32,"windBearing":301,"visibility":12.41,"pressure":1028.21},{"time":1422824400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.55,"dewPoint":-1.82,"humidity":0.71,"windSpeed":2.28,"windBearing":295,"visibility":14.95,"cloudCover":0.75,"pressure":1028.25},{"time":1422828000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.97,"apparentTemperature":0.69,"dewPoint":-2.1,"humidity":0.69,"windSpeed":2.29,"windBearing":304,"visibility":12.41,"pressure":1028.55},{"time":1422831600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":3.51,"apparentTemperature":1.37,"dewPoint":-2.53,"humidity":0.65,"windSpeed":2.24,"windBearing":294,"visibility":11.76,"pressure":1028.66},{"time":1422835200,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipType":"rain","temperature":4.28,"apparentTemperature":2.64,"dewPoint":-3.14,"humidity":0.58,"windSpeed":1.89,"windBearing":285,"visibility":14.63,"cloudCover":0.74,"pressure":1028.55},{"time":1422838800,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":4.95,"apparentTemperature":2.61,"dewPoint":-3.67,"humidity":0.54,"windSpeed":2.79,"windBearing":301,"visibility":11.76,"pressure":1028.43},{"time":1422842400,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":6.13,"apparentTemperature":3.48,"dewPoint":-3.35,"humidity":0.51,"windSpeed":3.6,"windBearing":316,"visibility":11.76,"pressure":1027.97},{"time":1422846000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipType":"rain","temperature":5.99,"apparentTemperature":3.08,"dewPoint":-3.91,"humidity":0.49,"windSpeed":3.99,"windBearing":320,"visibility":14.45,"cloudCover":0.75,"pressure":1027.18},{"time":1422849600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":6.01,"apparentTemperature":3.01,"dewPoint":-3.74,"humidity":0.5,"windSpeed":4.17,"windBearing":329,"visibility":11.76,"pressure":1026.79},{"time":1422853200,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.94,"apparentTemperature":3.4,"dewPoint":-3.33,"humidity":0.51,"windSpeed":3.34,"windBearing":343,"visibility":11.76,"pressure":1026.69},{"time":1422856800,"summary":"Overcast","icon":"cloudy","precipType":"rain","temperature":5.78,"apparentTemperature":2.98,"dewPoint":-3.41,"humidity":0.52,"windSpeed":3.72,"windBearing":342,"visibility":14.71,"cloudCover":0.96,"pressure":1026.77},{"time":1422860400,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.74,"apparentTemperature":3.42,"dewPoint":-3.07,"humidity":0.53,"windSpeed":2.97,"windBearing":337,"visibility":11.72,"pressure":1026.87},{"time":1422864000,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.33,"apparentTemperature":2.86,"dewPoint":-2.67,"humidity":0.56,"windSpeed":3.07,"windBearing":329,"visibility":11.76,"pressure":1027.16},{"time":1422867600,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":4.43,"apparentTemperature":1.56,"dewPoint":-1.98,"humidity":0.63,"windSpeed":3.37,"windBearing":323,"visibility":14.45,"cloudCover":0.75,"pressure":1027.26},{"time":1422871200,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.36,"apparentTemperature":1.63,"dewPoint":-1.97,"humidity":0.63,"windSpeed":3.14,"windBearing":315,"visibility":11.76,"pressure":1027.55},{"time":1422874800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.25,"apparentTemperature":1.71,"dewPoint":-1.68,"humidity":0.65,"windSpeed":2.87,"windBearing":300,"visibility":12.41,"pressure":1027.77},{"time":1422878400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":4.27,"apparentTemperature":1.95,"dewPoint":-1.74,"humidity":0.65,"windSpeed":2.59,"windBearing":313,"visibility":15.8,"cloudCover":0.76,"pressure":1027.98},{"time":1422882000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.25,"apparentTemperature":1.78,"dewPoint":-1.73,"humidity":0.65,"windSpeed":2.77,"windBearing":297,"visibility":14.52,"pressure":1028.02},{"time":1422885600,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.24,"apparentTemperature":2.03,"dewPoint":-1.72,"humidity":0.65,"windSpeed":2.46,"windBearing":296,"visibility":14.52,"pressure":1028.12}]},"daily":{"data":[{"time":1422802800,"summary":"Clear throughout the day.","icon":"clear-day","sunriseTime":1422827846,"sunsetTime":1422865697,"moonPhase":0.44,"precipType":"rain","temperatureMin":2.84,"temperatureMinTime":1422824400,"temperatureMax":6.13,"temperatureMaxTime":1422842400,"apparentTemperatureMin":0.47,"apparentTemperatureMinTime":1422813600,"apparentTemperatureMax":3.48,"apparentTemperatureMaxTime":1422842400,"dewPoint":-2.49,"humidity":0.62,"windSpeed":2.62,"windBearing":310,"visibility":13.45,"cloudCover":0.73,"pressure":1027.9}]},"flags":{"sources":["isd"],"isd-stations":["476490-99999","476510-99999","476630-99999","476840-99999","477500-99999","477590-99999","477610-99999","477690-99999","477700-99999","477710-99999","477720-99999","477740-99999","477760-99999","477770-99999","477790-99999","477800-99999"],"units":"si"}}]

pd.DataFrame(json_obj[0]).to_csv("/tmp/test.csv")

假设您知道如何从url中提取数据并将其放入变量中

json
转换为
csv
的最简单方法是使用万能的
pandas
库。 您可以将其放入
pandas
数据框中,然后将其直接转换为
csv

下面是一个示例代码:

import pandas as pd

json_obj = [{"latitude":34.700869,"longitude":135.503755,"timezone":"Asia/Tokyo","offset":9,"currently":{"time":1422831600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":3.51,"apparentTemperature":1.37,"dewPoint":-2.53,"humidity":0.65,"windSpeed":2.24,"windBearing":294,"visibility":11.76,"pressure":1028.66},"hourly":{"summary":"Clear throughout the day.","icon":"clear-day","data":[{"time":1422802800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.94,"apparentTemperature":1.07,"dewPoint":-2.09,"humidity":0.7,"windSpeed":1.91,"windBearing":295,"visibility":14.52,"pressure":1029.11},{"time":1422806400,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.65,"dewPoint":-2.12,"humidity":0.7,"windSpeed":2.23,"windBearing":292,"visibility":14.52,"pressure":1028.7},{"time":1422810000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.78,"dewPoint":-2.17,"humidity":0.69,"windSpeed":2.11,"windBearing":270,"visibility":14.16,"pressure":1028.52},{"time":1422813600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.47,"dewPoint":-2.12,"humidity":0.7,"windSpeed":2.36,"windBearing":282,"visibility":15.77,"cloudCover":0.38,"pressure":1028.25},{"time":1422817200,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.65,"dewPoint":-2.13,"humidity":0.7,"windSpeed":2.19,"windBearing":285,"visibility":14.52,"pressure":1028.16},{"time":1422820800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.56,"dewPoint":-1.72,"humidity":0.72,"windSpeed":2.32,"windBearing":301,"visibility":12.41,"pressure":1028.21},{"time":1422824400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.55,"dewPoint":-1.82,"humidity":0.71,"windSpeed":2.28,"windBearing":295,"visibility":14.95,"cloudCover":0.75,"pressure":1028.25},{"time":1422828000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.97,"apparentTemperature":0.69,"dewPoint":-2.1,"humidity":0.69,"windSpeed":2.29,"windBearing":304,"visibility":12.41,"pressure":1028.55},{"time":1422831600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":3.51,"apparentTemperature":1.37,"dewPoint":-2.53,"humidity":0.65,"windSpeed":2.24,"windBearing":294,"visibility":11.76,"pressure":1028.66},{"time":1422835200,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipType":"rain","temperature":4.28,"apparentTemperature":2.64,"dewPoint":-3.14,"humidity":0.58,"windSpeed":1.89,"windBearing":285,"visibility":14.63,"cloudCover":0.74,"pressure":1028.55},{"time":1422838800,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":4.95,"apparentTemperature":2.61,"dewPoint":-3.67,"humidity":0.54,"windSpeed":2.79,"windBearing":301,"visibility":11.76,"pressure":1028.43},{"time":1422842400,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":6.13,"apparentTemperature":3.48,"dewPoint":-3.35,"humidity":0.51,"windSpeed":3.6,"windBearing":316,"visibility":11.76,"pressure":1027.97},{"time":1422846000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipType":"rain","temperature":5.99,"apparentTemperature":3.08,"dewPoint":-3.91,"humidity":0.49,"windSpeed":3.99,"windBearing":320,"visibility":14.45,"cloudCover":0.75,"pressure":1027.18},{"time":1422849600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":6.01,"apparentTemperature":3.01,"dewPoint":-3.74,"humidity":0.5,"windSpeed":4.17,"windBearing":329,"visibility":11.76,"pressure":1026.79},{"time":1422853200,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.94,"apparentTemperature":3.4,"dewPoint":-3.33,"humidity":0.51,"windSpeed":3.34,"windBearing":343,"visibility":11.76,"pressure":1026.69},{"time":1422856800,"summary":"Overcast","icon":"cloudy","precipType":"rain","temperature":5.78,"apparentTemperature":2.98,"dewPoint":-3.41,"humidity":0.52,"windSpeed":3.72,"windBearing":342,"visibility":14.71,"cloudCover":0.96,"pressure":1026.77},{"time":1422860400,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.74,"apparentTemperature":3.42,"dewPoint":-3.07,"humidity":0.53,"windSpeed":2.97,"windBearing":337,"visibility":11.72,"pressure":1026.87},{"time":1422864000,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.33,"apparentTemperature":2.86,"dewPoint":-2.67,"humidity":0.56,"windSpeed":3.07,"windBearing":329,"visibility":11.76,"pressure":1027.16},{"time":1422867600,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":4.43,"apparentTemperature":1.56,"dewPoint":-1.98,"humidity":0.63,"windSpeed":3.37,"windBearing":323,"visibility":14.45,"cloudCover":0.75,"pressure":1027.26},{"time":1422871200,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.36,"apparentTemperature":1.63,"dewPoint":-1.97,"humidity":0.63,"windSpeed":3.14,"windBearing":315,"visibility":11.76,"pressure":1027.55},{"time":1422874800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.25,"apparentTemperature":1.71,"dewPoint":-1.68,"humidity":0.65,"windSpeed":2.87,"windBearing":300,"visibility":12.41,"pressure":1027.77},{"time":1422878400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":4.27,"apparentTemperature":1.95,"dewPoint":-1.74,"humidity":0.65,"windSpeed":2.59,"windBearing":313,"visibility":15.8,"cloudCover":0.76,"pressure":1027.98},{"time":1422882000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.25,"apparentTemperature":1.78,"dewPoint":-1.73,"humidity":0.65,"windSpeed":2.77,"windBearing":297,"visibility":14.52,"pressure":1028.02},{"time":1422885600,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.24,"apparentTemperature":2.03,"dewPoint":-1.72,"humidity":0.65,"windSpeed":2.46,"windBearing":296,"visibility":14.52,"pressure":1028.12}]},"daily":{"data":[{"time":1422802800,"summary":"Clear throughout the day.","icon":"clear-day","sunriseTime":1422827846,"sunsetTime":1422865697,"moonPhase":0.44,"precipType":"rain","temperatureMin":2.84,"temperatureMinTime":1422824400,"temperatureMax":6.13,"temperatureMaxTime":1422842400,"apparentTemperatureMin":0.47,"apparentTemperatureMinTime":1422813600,"apparentTemperatureMax":3.48,"apparentTemperatureMaxTime":1422842400,"dewPoint":-2.49,"humidity":0.62,"windSpeed":2.62,"windBearing":310,"visibility":13.45,"cloudCover":0.73,"pressure":1027.9}]},"flags":{"sources":["isd"],"isd-stations":["476490-99999","476510-99999","476630-99999","476840-99999","477500-99999","477590-99999","477610-99999","477690-99999","477700-99999","477710-99999","477720-99999","477740-99999","477760-99999","477770-99999","477790-99999","477800-99999"],"units":"si"}}]

pd.DataFrame(json_obj[0]).to_csv("/tmp/test.csv")

我假设您完成了网站解析部分,并且您拥有最终的
列表
,其中包含
python dict
。我将在解决方案中仅使用最终输出

所以,你可以试试这些代码。他们将解析您当前的
列表
,并返回一个
csv

PS:

处理像您这样的
dict
,并用我当前的代码对其进行解析,可能不会输出与您在问题中给出的顺序相同的输出

否则,您可以使用和修改这些代码,直到它们满足您的需要

但是,使用当前的解决方案,您可以获得正确的
csv
。如果您在下面的代码中发现了任何bug或一些您无法理解的东西,请毫不犹豫地留下您的评论

解决方案1:使用
pandas

import pandas as pd 
from os import getcwd

a = [{"latitude":34.700869,"longitude":135.503755,"timezone":"Asia/Tokyo","offset":9,"currently":{"time":1422831600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":3.51,"apparentTemperature":1.37,"dewPoint":-2.53,"humidity":0.65,"windSpeed":2.24,"windBearing":294,"visibility":11.76,"pressure":1028.66},"hourly":{"summary":"Clear throughout the day.","icon":"clear-day","data":[{"time":1422802800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.94,"apparentTemperature":1.07,"dewPoint":-2.09,"humidity":0.7,"windSpeed":1.91,"windBearing":295,"visibility":14.52,"pressure":1029.11},{"time":1422806400,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.65,"dewPoint":-2.12,"humidity":0.7,"windSpeed":2.23,"windBearing":292,"visibility":14.52,"pressure":1028.7},{"time":1422810000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.78,"dewPoint":-2.17,"humidity":0.69,"windSpeed":2.11,"windBearing":270,"visibility":14.16,"pressure":1028.52},{"time":1422813600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.47,"dewPoint":-2.12,"humidity":0.7,"windSpeed":2.36,"windBearing":282,"visibility":15.77,"cloudCover":0.38,"pressure":1028.25},{"time":1422817200,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.65,"dewPoint":-2.13,"humidity":0.7,"windSpeed":2.19,"windBearing":285,"visibility":14.52,"pressure":1028.16},{"time":1422820800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.56,"dewPoint":-1.72,"humidity":0.72,"windSpeed":2.32,"windBearing":301,"visibility":12.41,"pressure":1028.21},{"time":1422824400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.55,"dewPoint":-1.82,"humidity":0.71,"windSpeed":2.28,"windBearing":295,"visibility":14.95,"cloudCover":0.75,"pressure":1028.25},{"time":1422828000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.97,"apparentTemperature":0.69,"dewPoint":-2.1,"humidity":0.69,"windSpeed":2.29,"windBearing":304,"visibility":12.41,"pressure":1028.55},{"time":1422831600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":3.51,"apparentTemperature":1.37,"dewPoint":-2.53,"humidity":0.65,"windSpeed":2.24,"windBearing":294,"visibility":11.76,"pressure":1028.66},{"time":1422835200,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipType":"rain","temperature":4.28,"apparentTemperature":2.64,"dewPoint":-3.14,"humidity":0.58,"windSpeed":1.89,"windBearing":285,"visibility":14.63,"cloudCover":0.74,"pressure":1028.55},{"time":1422838800,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":4.95,"apparentTemperature":2.61,"dewPoint":-3.67,"humidity":0.54,"windSpeed":2.79,"windBearing":301,"visibility":11.76,"pressure":1028.43},{"time":1422842400,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":6.13,"apparentTemperature":3.48,"dewPoint":-3.35,"humidity":0.51,"windSpeed":3.6,"windBearing":316,"visibility":11.76,"pressure":1027.97},{"time":1422846000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipType":"rain","temperature":5.99,"apparentTemperature":3.08,"dewPoint":-3.91,"humidity":0.49,"windSpeed":3.99,"windBearing":320,"visibility":14.45,"cloudCover":0.75,"pressure":1027.18},{"time":1422849600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":6.01,"apparentTemperature":3.01,"dewPoint":-3.74,"humidity":0.5,"windSpeed":4.17,"windBearing":329,"visibility":11.76,"pressure":1026.79},{"time":1422853200,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.94,"apparentTemperature":3.4,"dewPoint":-3.33,"humidity":0.51,"windSpeed":3.34,"windBearing":343,"visibility":11.76,"pressure":1026.69},{"time":1422856800,"summary":"Overcast","icon":"cloudy","precipType":"rain","temperature":5.78,"apparentTemperature":2.98,"dewPoint":-3.41,"humidity":0.52,"windSpeed":3.72,"windBearing":342,"visibility":14.71,"cloudCover":0.96,"pressure":1026.77},{"time":1422860400,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.74,"apparentTemperature":3.42,"dewPoint":-3.07,"humidity":0.53,"windSpeed":2.97,"windBearing":337,"visibility":11.72,"pressure":1026.87},{"time":1422864000,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.33,"apparentTemperature":2.86,"dewPoint":-2.67,"humidity":0.56,"windSpeed":3.07,"windBearing":329,"visibility":11.76,"pressure":1027.16},{"time":1422867600,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":4.43,"apparentTemperature":1.56,"dewPoint":-1.98,"humidity":0.63,"windSpeed":3.37,"windBearing":323,"visibility":14.45,"cloudCover":0.75,"pressure":1027.26},{"time":1422871200,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.36,"apparentTemperature":1.63,"dewPoint":-1.97,"humidity":0.63,"windSpeed":3.14,"windBearing":315,"visibility":11.76,"pressure":1027.55},{"time":1422874800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.25,"apparentTemperature":1.71,"dewPoint":-1.68,"humidity":0.65,"windSpeed":2.87,"windBearing":300,"visibility":12.41,"pressure":1027.77},{"time":1422878400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":4.27,"apparentTemperature":1.95,"dewPoint":-1.74,"humidity":0.65,"windSpeed":2.59,"windBearing":313,"visibility":15.8,"cloudCover":0.76,"pressure":1027.98},{"time":1422882000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.25,"apparentTemperature":1.78,"dewPoint":-1.73,"humidity":0.65,"windSpeed":2.77,"windBearing":297,"visibility":14.52,"pressure":1028.02},{"time":1422885600,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.24,"apparentTemperature":2.03,"dewPoint":-1.72,"humidity":0.65,"windSpeed":2.46,"windBearing":296,"visibility":14.52,"pressure":1028.12}]},"daily":{"data":[{"time":1422802800,"summary":"Clear throughout the day.","icon":"clear-day","sunriseTime":1422827846,"sunsetTime":1422865697,"moonPhase":0.44,"precipType":"rain","temperatureMin":2.84,"temperatureMinTime":1422824400,"temperatureMax":6.13,"temperatureMaxTime":1422842400,"apparentTemperatureMin":0.47,"apparentTemperatureMinTime":1422813600,"apparentTemperatureMax":3.48,"apparentTemperatureMaxTime":1422842400,"dewPoint":-2.49,"humidity":0.62,"windSpeed":2.62,"windBearing":310,"visibility":13.45,"cloudCover":0.73,"pressure":1027.9}]},"flags":{"sources":["isd"],"isd-stations":["476490-99999","476510-99999","476630-99999","476840-99999","477500-99999","477590-99999","477610-99999","477690-99999","477700-99999","477710-99999","477720-99999","477740-99999","477760-99999","477770-99999","477790-99999","477800-99999"],"units":"si"}}]

WORKING_DIRECTORY = getcwd()

def to_csv(a, key, path = WORKING_DIRECTORY, file_name = "new_file.csv"):
    full_path = path + '/' + file_name
    # Only those two keys are supported for this piece of code
    # More work and debugging for the other keys is needed
    if key == "hourly" or key == "daily":
        pd.DataFrame.from_dict(a[key]["data"]).to_csv(full_path)
    else:
        raise Exception("Those keys are not supported yet!")

for k in a:
    to_csv(k, "hourly", file_name="hourly.csv")
    to_csv(k, "daily", file_name="daily.csv" )
解决方案2:手动操作:(这不是一个好方法,但您可以了解如何在不使用外部模块的情况下面对此类问题。)

输出:

小时.csv

temperature,windBearing,cloudCover,icon,precipType,summary,humidity,dewPoint,time,pressure,visibility,windSpeed,apparentTemperature
2.94, 295,  ,clear-night, rain, Clear, 0.7, -2.09, 1422802800, 1029.11, 14.52, 1.91, 1.07, 
2.88, 292,  ,clear-night, rain, Clear, 0.7, -2.12, 1422806400, 1028.7, 14.52, 2.23, 0.65, 
2.88, 270,  ,clear-night, rain, Clear, 0.69, -2.17, 1422810000, 1028.52, 14.16, 2.11, 0.78, 
2.84, 282, 0.38, partly-cloudy-night, rain, Partly Cloudy, 0.7, -2.12, 1422813600, 1028.25, 15.77, 2.36, 0.47, 
...
windBearing,apparentTemperatureMax,summary,apparentTemperatureMin,apparentTemperatureMaxTime,temperatureMaxTime,apparentTemperatureMinTime,windSpeed,pressure,temperatureMin,sunsetTime,icon,cloudCover,moonPhase,time,temperatureMinTime,visibility,dewPoint,sunriseTime,precipType,humidity,temperatureMax
310, 3.48, Clear throughout the day., 0.47, 1422842400, 1422842400, 1422813600, 2.62, 1027.9, 2.84, 1422865697, clear-day, 0.73, 0.44, 1422802800, 1422824400, 13.45, -2.49, 1422827846, rain, 0.62, 6.13,
...
isd-stations,sources,units
,isd,si
476490-99999,
476510-99999,
476630-99999,
476840-99999,
...
每日.csv

temperature,windBearing,cloudCover,icon,precipType,summary,humidity,dewPoint,time,pressure,visibility,windSpeed,apparentTemperature
2.94, 295,  ,clear-night, rain, Clear, 0.7, -2.09, 1422802800, 1029.11, 14.52, 1.91, 1.07, 
2.88, 292,  ,clear-night, rain, Clear, 0.7, -2.12, 1422806400, 1028.7, 14.52, 2.23, 0.65, 
2.88, 270,  ,clear-night, rain, Clear, 0.69, -2.17, 1422810000, 1028.52, 14.16, 2.11, 0.78, 
2.84, 282, 0.38, partly-cloudy-night, rain, Partly Cloudy, 0.7, -2.12, 1422813600, 1028.25, 15.77, 2.36, 0.47, 
...
windBearing,apparentTemperatureMax,summary,apparentTemperatureMin,apparentTemperatureMaxTime,temperatureMaxTime,apparentTemperatureMinTime,windSpeed,pressure,temperatureMin,sunsetTime,icon,cloudCover,moonPhase,time,temperatureMinTime,visibility,dewPoint,sunriseTime,precipType,humidity,temperatureMax
310, 3.48, Clear throughout the day., 0.47, 1422842400, 1422842400, 1422813600, 2.62, 1027.9, 2.84, 1422865697, clear-day, 0.73, 0.44, 1422802800, 1422824400, 13.45, -2.49, 1422827846, rain, 0.62, 6.13,
...
isd-stations,sources,units
,isd,si
476490-99999,
476510-99999,
476630-99999,
476840-99999,
...
flags.csv

temperature,windBearing,cloudCover,icon,precipType,summary,humidity,dewPoint,time,pressure,visibility,windSpeed,apparentTemperature
2.94, 295,  ,clear-night, rain, Clear, 0.7, -2.09, 1422802800, 1029.11, 14.52, 1.91, 1.07, 
2.88, 292,  ,clear-night, rain, Clear, 0.7, -2.12, 1422806400, 1028.7, 14.52, 2.23, 0.65, 
2.88, 270,  ,clear-night, rain, Clear, 0.69, -2.17, 1422810000, 1028.52, 14.16, 2.11, 0.78, 
2.84, 282, 0.38, partly-cloudy-night, rain, Partly Cloudy, 0.7, -2.12, 1422813600, 1028.25, 15.77, 2.36, 0.47, 
...
windBearing,apparentTemperatureMax,summary,apparentTemperatureMin,apparentTemperatureMaxTime,temperatureMaxTime,apparentTemperatureMinTime,windSpeed,pressure,temperatureMin,sunsetTime,icon,cloudCover,moonPhase,time,temperatureMinTime,visibility,dewPoint,sunriseTime,precipType,humidity,temperatureMax
310, 3.48, Clear throughout the day., 0.47, 1422842400, 1422842400, 1422813600, 2.62, 1027.9, 2.84, 1422865697, clear-day, 0.73, 0.44, 1422802800, 1422824400, 13.45, -2.49, 1422827846, rain, 0.62, 6.13,
...
isd-stations,sources,units
,isd,si
476490-99999,
476510-99999,
476630-99999,
476840-99999,
...

我假设您完成了网站解析部分,并且您拥有最终的
列表
,其中包含
python dict
。我将在解决方案中仅使用最终输出

所以,你可以试试这些代码。他们将解析您当前的
列表
,并返回一个
csv

PS:

处理像您这样的
dict
,并用我当前的代码对其进行解析,可能不会输出与您在问题中给出的顺序相同的输出

否则,您可以使用和修改这些代码,直到它们满足您的需要

但是,使用当前的解决方案,您可以获得正确的
csv
。如果您在下面的代码中发现了任何bug或一些您无法理解的东西,请毫不犹豫地留下您的评论

解决方案1:使用
pandas

import pandas as pd 
from os import getcwd

a = [{"latitude":34.700869,"longitude":135.503755,"timezone":"Asia/Tokyo","offset":9,"currently":{"time":1422831600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":3.51,"apparentTemperature":1.37,"dewPoint":-2.53,"humidity":0.65,"windSpeed":2.24,"windBearing":294,"visibility":11.76,"pressure":1028.66},"hourly":{"summary":"Clear throughout the day.","icon":"clear-day","data":[{"time":1422802800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.94,"apparentTemperature":1.07,"dewPoint":-2.09,"humidity":0.7,"windSpeed":1.91,"windBearing":295,"visibility":14.52,"pressure":1029.11},{"time":1422806400,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.65,"dewPoint":-2.12,"humidity":0.7,"windSpeed":2.23,"windBearing":292,"visibility":14.52,"pressure":1028.7},{"time":1422810000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.78,"dewPoint":-2.17,"humidity":0.69,"windSpeed":2.11,"windBearing":270,"visibility":14.16,"pressure":1028.52},{"time":1422813600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.47,"dewPoint":-2.12,"humidity":0.7,"windSpeed":2.36,"windBearing":282,"visibility":15.77,"cloudCover":0.38,"pressure":1028.25},{"time":1422817200,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.65,"dewPoint":-2.13,"humidity":0.7,"windSpeed":2.19,"windBearing":285,"visibility":14.52,"pressure":1028.16},{"time":1422820800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.88,"apparentTemperature":0.56,"dewPoint":-1.72,"humidity":0.72,"windSpeed":2.32,"windBearing":301,"visibility":12.41,"pressure":1028.21},{"time":1422824400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":2.84,"apparentTemperature":0.55,"dewPoint":-1.82,"humidity":0.71,"windSpeed":2.28,"windBearing":295,"visibility":14.95,"cloudCover":0.75,"pressure":1028.25},{"time":1422828000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":2.97,"apparentTemperature":0.69,"dewPoint":-2.1,"humidity":0.69,"windSpeed":2.29,"windBearing":304,"visibility":12.41,"pressure":1028.55},{"time":1422831600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":3.51,"apparentTemperature":1.37,"dewPoint":-2.53,"humidity":0.65,"windSpeed":2.24,"windBearing":294,"visibility":11.76,"pressure":1028.66},{"time":1422835200,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipType":"rain","temperature":4.28,"apparentTemperature":2.64,"dewPoint":-3.14,"humidity":0.58,"windSpeed":1.89,"windBearing":285,"visibility":14.63,"cloudCover":0.74,"pressure":1028.55},{"time":1422838800,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":4.95,"apparentTemperature":2.61,"dewPoint":-3.67,"humidity":0.54,"windSpeed":2.79,"windBearing":301,"visibility":11.76,"pressure":1028.43},{"time":1422842400,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":6.13,"apparentTemperature":3.48,"dewPoint":-3.35,"humidity":0.51,"windSpeed":3.6,"windBearing":316,"visibility":11.76,"pressure":1027.97},{"time":1422846000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipType":"rain","temperature":5.99,"apparentTemperature":3.08,"dewPoint":-3.91,"humidity":0.49,"windSpeed":3.99,"windBearing":320,"visibility":14.45,"cloudCover":0.75,"pressure":1027.18},{"time":1422849600,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":6.01,"apparentTemperature":3.01,"dewPoint":-3.74,"humidity":0.5,"windSpeed":4.17,"windBearing":329,"visibility":11.76,"pressure":1026.79},{"time":1422853200,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.94,"apparentTemperature":3.4,"dewPoint":-3.33,"humidity":0.51,"windSpeed":3.34,"windBearing":343,"visibility":11.76,"pressure":1026.69},{"time":1422856800,"summary":"Overcast","icon":"cloudy","precipType":"rain","temperature":5.78,"apparentTemperature":2.98,"dewPoint":-3.41,"humidity":0.52,"windSpeed":3.72,"windBearing":342,"visibility":14.71,"cloudCover":0.96,"pressure":1026.77},{"time":1422860400,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.74,"apparentTemperature":3.42,"dewPoint":-3.07,"humidity":0.53,"windSpeed":2.97,"windBearing":337,"visibility":11.72,"pressure":1026.87},{"time":1422864000,"summary":"Clear","icon":"clear-day","precipType":"rain","temperature":5.33,"apparentTemperature":2.86,"dewPoint":-2.67,"humidity":0.56,"windSpeed":3.07,"windBearing":329,"visibility":11.76,"pressure":1027.16},{"time":1422867600,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":4.43,"apparentTemperature":1.56,"dewPoint":-1.98,"humidity":0.63,"windSpeed":3.37,"windBearing":323,"visibility":14.45,"cloudCover":0.75,"pressure":1027.26},{"time":1422871200,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.36,"apparentTemperature":1.63,"dewPoint":-1.97,"humidity":0.63,"windSpeed":3.14,"windBearing":315,"visibility":11.76,"pressure":1027.55},{"time":1422874800,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.25,"apparentTemperature":1.71,"dewPoint":-1.68,"humidity":0.65,"windSpeed":2.87,"windBearing":300,"visibility":12.41,"pressure":1027.77},{"time":1422878400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipType":"rain","temperature":4.27,"apparentTemperature":1.95,"dewPoint":-1.74,"humidity":0.65,"windSpeed":2.59,"windBearing":313,"visibility":15.8,"cloudCover":0.76,"pressure":1027.98},{"time":1422882000,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.25,"apparentTemperature":1.78,"dewPoint":-1.73,"humidity":0.65,"windSpeed":2.77,"windBearing":297,"visibility":14.52,"pressure":1028.02},{"time":1422885600,"summary":"Clear","icon":"clear-night","precipType":"rain","temperature":4.24,"apparentTemperature":2.03,"dewPoint":-1.72,"humidity":0.65,"windSpeed":2.46,"windBearing":296,"visibility":14.52,"pressure":1028.12}]},"daily":{"data":[{"time":1422802800,"summary":"Clear throughout the day.","icon":"clear-day","sunriseTime":1422827846,"sunsetTime":1422865697,"moonPhase":0.44,"precipType":"rain","temperatureMin":2.84,"temperatureMinTime":1422824400,"temperatureMax":6.13,"temperatureMaxTime":1422842400,"apparentTemperatureMin":0.47,"apparentTemperatureMinTime":1422813600,"apparentTemperatureMax":3.48,"apparentTemperatureMaxTime":1422842400,"dewPoint":-2.49,"humidity":0.62,"windSpeed":2.62,"windBearing":310,"visibility":13.45,"cloudCover":0.73,"pressure":1027.9}]},"flags":{"sources":["isd"],"isd-stations":["476490-99999","476510-99999","476630-99999","476840-99999","477500-99999","477590-99999","477610-99999","477690-99999","477700-99999","477710-99999","477720-99999","477740-99999","477760-99999","477770-99999","477790-99999","477800-99999"],"units":"si"}}]

WORKING_DIRECTORY = getcwd()

def to_csv(a, key, path = WORKING_DIRECTORY, file_name = "new_file.csv"):
    full_path = path + '/' + file_name
    # Only those two keys are supported for this piece of code
    # More work and debugging for the other keys is needed
    if key == "hourly" or key == "daily":
        pd.DataFrame.from_dict(a[key]["data"]).to_csv(full_path)
    else:
        raise Exception("Those keys are not supported yet!")

for k in a:
    to_csv(k, "hourly", file_name="hourly.csv")
    to_csv(k, "daily", file_name="daily.csv" )
解决方案2:手动操作:(这不是一个好方法,但您可以了解如何在不使用外部模块的情况下面对此类问题。)

输出:

小时.csv

temperature,windBearing,cloudCover,icon,precipType,summary,humidity,dewPoint,time,pressure,visibility,windSpeed,apparentTemperature
2.94, 295,  ,clear-night, rain, Clear, 0.7, -2.09, 1422802800, 1029.11, 14.52, 1.91, 1.07, 
2.88, 292,  ,clear-night, rain, Clear, 0.7, -2.12, 1422806400, 1028.7, 14.52, 2.23, 0.65, 
2.88, 270,  ,clear-night, rain, Clear, 0.69, -2.17, 1422810000, 1028.52, 14.16, 2.11, 0.78, 
2.84, 282, 0.38, partly-cloudy-night, rain, Partly Cloudy, 0.7, -2.12, 1422813600, 1028.25, 15.77, 2.36, 0.47, 
...
windBearing,apparentTemperatureMax,summary,apparentTemperatureMin,apparentTemperatureMaxTime,temperatureMaxTime,apparentTemperatureMinTime,windSpeed,pressure,temperatureMin,sunsetTime,icon,cloudCover,moonPhase,time,temperatureMinTime,visibility,dewPoint,sunriseTime,precipType,humidity,temperatureMax
310, 3.48, Clear throughout the day., 0.47, 1422842400, 1422842400, 1422813600, 2.62, 1027.9, 2.84, 1422865697, clear-day, 0.73, 0.44, 1422802800, 1422824400, 13.45, -2.49, 1422827846, rain, 0.62, 6.13,
...
isd-stations,sources,units
,isd,si
476490-99999,
476510-99999,
476630-99999,
476840-99999,
...
每日.csv

temperature,windBearing,cloudCover,icon,precipType,summary,humidity,dewPoint,time,pressure,visibility,windSpeed,apparentTemperature
2.94, 295,  ,clear-night, rain, Clear, 0.7, -2.09, 1422802800, 1029.11, 14.52, 1.91, 1.07, 
2.88, 292,  ,clear-night, rain, Clear, 0.7, -2.12, 1422806400, 1028.7, 14.52, 2.23, 0.65, 
2.88, 270,  ,clear-night, rain, Clear, 0.69, -2.17, 1422810000, 1028.52, 14.16, 2.11, 0.78, 
2.84, 282, 0.38, partly-cloudy-night, rain, Partly Cloudy, 0.7, -2.12, 1422813600, 1028.25, 15.77, 2.36, 0.47, 
...
windBearing,apparentTemperatureMax,summary,apparentTemperatureMin,apparentTemperatureMaxTime,temperatureMaxTime,apparentTemperatureMinTime,windSpeed,pressure,temperatureMin,sunsetTime,icon,cloudCover,moonPhase,time,temperatureMinTime,visibility,dewPoint,sunriseTime,precipType,humidity,temperatureMax
310, 3.48, Clear throughout the day., 0.47, 1422842400, 1422842400, 1422813600, 2.62, 1027.9, 2.84, 1422865697, clear-day, 0.73, 0.44, 1422802800, 1422824400, 13.45, -2.49, 1422827846, rain, 0.62, 6.13,
...
isd-stations,sources,units
,isd,si
476490-99999,
476510-99999,
476630-99999,
476840-99999,
...
flags.csv

temperature,windBearing,cloudCover,icon,precipType,summary,humidity,dewPoint,time,pressure,visibility,windSpeed,apparentTemperature
2.94, 295,  ,clear-night, rain, Clear, 0.7, -2.09, 1422802800, 1029.11, 14.52, 1.91, 1.07, 
2.88, 292,  ,clear-night, rain, Clear, 0.7, -2.12, 1422806400, 1028.7, 14.52, 2.23, 0.65, 
2.88, 270,  ,clear-night, rain, Clear, 0.69, -2.17, 1422810000, 1028.52, 14.16, 2.11, 0.78, 
2.84, 282, 0.38, partly-cloudy-night, rain, Partly Cloudy, 0.7, -2.12, 1422813600, 1028.25, 15.77, 2.36, 0.47, 
...
windBearing,apparentTemperatureMax,summary,apparentTemperatureMin,apparentTemperatureMaxTime,temperatureMaxTime,apparentTemperatureMinTime,windSpeed,pressure,temperatureMin,sunsetTime,icon,cloudCover,moonPhase,time,temperatureMinTime,visibility,dewPoint,sunriseTime,precipType,humidity,temperatureMax
310, 3.48, Clear throughout the day., 0.47, 1422842400, 1422842400, 1422813600, 2.62, 1027.9, 2.84, 1422865697, clear-day, 0.73, 0.44, 1422802800, 1422824400, 13.45, -2.49, 1422827846, rain, 0.62, 6.13,
...
isd-stations,sources,units
,isd,si
476490-99999,
476510-99999,
476630-99999,
476840-99999,
...

是否有您期望的特定输出格式?你收到的json中有很多嵌套的dict。我只是希望得到一个可读的CSV。当我把这个片段转换成csv时(去掉方括号),它看起来很棒。像这样的东西会很好。我认为这里的主要问题是你的csv文件看起来如何。您的
dict[“data”]
键中有大量数据。你会如何设置格式?@David你会用你的新评论更新你的问题吗。请尝试对您的预期输出以及它的组织方式给出一个清晰的概述。@ChihebNexus已更新。是否有您预期的特定输出格式?你收到的json中有很多嵌套的dict。我只是希望得到一个可读的CSV。当我把这个片段转换成csv时(去掉方括号),它看起来很棒。像这样的东西会很好。我认为这里的主要问题是你的csv文件看起来如何。您的
dict[“data”]
键中有大量数据。你会如何设置格式?@David你会用你的新评论更新你的问题吗。尽量对你的预期产出和组织方式有一个清晰的概述。@ChihebNexus更新。我非常感谢所有花时间帮助我这样的人。希望有一天我能报答其他人。不客气。我很高兴我的回答解决了你的问题。如果您有更好的解决方案,请随时与我们分享。我们互相学习,这就是为什么编码是一种艺术和乐趣。祝你度过愉快的一天:-)我非常感谢所有花时间帮助像我这样的人的人。希望有一天我能报答其他人。不客气。我很高兴我的回答解决了你的问题。如果您有更好的解决方案,请随时与我们分享。我们互相学习,这就是为什么编码是一种艺术和乐趣。祝你今天愉快:-)