[英]Parse JSON to a flat file in Python
我想讀一個JSON格式文件,其中key始終不相同,並將其轉換為平面文件以供進一步處理。 我嘗試找到一個解決方案,但沒有任何效果。
以下是示例JSON數據。
{
"Meta Data": {
"1. Information": "Intraday (5min) open, high, low, close prices and volume",
"2. Symbol": "MSFT",
"3. Last Refreshed": "2019-04-15 13:05:00",
"4. Interval": "5min",
"5. Output Size": "Compact",
"6. Time Zone": "US/Eastern"
},
"Time Series (5min)": {
"2019-04-15 13:05:00": {
"1. open": "120.8250",
"2. high": "120.9400",
"3. low": "120.7800",
"4. close": "120.9275",
"5. volume": "152975"
},
"2019-04-15 13:00:00": {
"1. open": "120.8900",
"2. high": "120.8900",
"3. low": "120.8000",
"4. close": "120.8250",
"5. volume": "156065"
},
"2019-04-15 12:55:00": {
"1. open": "120.8600",
"2. high": "120.9000",
"3. low": "120.8450",
"4. close": "120.8950",
"5. volume": "53450"
},
}
}
我想將其轉換為以下格式
2019-04-15 13:05:00,120.8250,120.9400,120.7800,120.9275,152975
2019-04-15 13:00:00,120.8900,120.8900,120.8000,120.8250,156065
2019-04-15 12:55:00,120.8600,120.9000,120.8450,120.8950,53450
我試過下面的東西。
url = URL from where data is coming in JSON format.
response = requests.get(url, headers=header, cookies=cookies)
dic = json.loads(response.content)
len_of_timeseries = len(dic["Time Series (1min)"])
key_len = {}
for k in dic["Time Series (1min)"]:
print (dic["Time Series (1min)"][k])
f = open(symbolFile,"w")
f.write(write the file here)
f.close
以上打印聲明是如下打印詳細信息。 根本不是閱讀日期字段。
{'1. open': '11689.7998', '2. high': '11690.6504', '3. low': '11689.3496', '4. close': '11689.5996', '5. volume': '0'}
{'1. open': '11687.2500', '2. high': '11690.2002', '3. low': '11686.6504', '4. close': '11689.3496', '5. volume': '0'}
任何幫助將不勝感激。
謝謝
for循環中的k值包含您要查找的日期:
for k in dic["Time Series (1min)"]:
print (dic["Time Series (1min)"][k])
print(k) # this will print the date
dic = {
"Meta Data": {
"1. Information": "Intraday (5min) open, high, low, close prices and volume",
"2. Symbol": "MSFT",
"3. Last Refreshed": "2019-04-15 13:05:00",
"4. Interval": "5min",
"5. Output Size": "Compact",
"6. Time Zone": "US/Eastern"
},
"Time Series (5min)": {
"2019-04-15 13:05:00": {
"1. open": "120.8250",
"2. high": "120.9400",
"3. low": "120.7800",
"4. close": "120.9275",
"5. volume": "152975"
},
"2019-04-15 13:00:00": {
"1. open": "120.8900",
"2. high": "120.8900",
"3. low": "120.8000",
"4. close": "120.8250",
"5. volume": "156065"
},
"2019-04-15 12:55:00": {
"1. open": "120.8600",
"2. high": "120.9000",
"3. low": "120.8450",
"4. close": "120.8950",
"5. volume": "53450"
},
}
}
。
items = dic["Time Series (5min)"]
for dt, v in items.items():
row = [dt] # date time
row += v.values()
print(','.join(row))
結果
2019-04-15 13:05:00,120.8250,120.9400,120.7800,120.9275,152975
2019-04-15 13:00:00,120.8900,120.8900,120.8000,120.8250,156065
2019-04-15 12:55:00,120.8600,120.9000,120.8450,120.8950,53450
但它可能不會尊重排序。
如果您知道鍵"1. open"
, "2. high"
等,那么最好使用它們來保持秩序。
for dt, v in items.items():
row = [dt, v["1. open"], v["2. high"], v["3. low"], v["4. close"], v["5. volume"]]
print(','.join(row))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.