即使API上的日期不断变化,我能否找到此股票的close
价格?
API:
'Time Series (1min)': {
'2017-12-19 13:01:00':{
'1. open':'196.4100',
'2. high':'196.5075',
'3. low':'196.3800',
'4. close':'196.3800',
'5. volume':'4961'
}
}
Python代码:
print('Grabbing stock price...')
ourl = req.get(url)
im = ourl.json()
return im #return closing price
答案 0 :(得分:0)
使用im = {
'Time Series (1min)': {
'2017-12-19 13:01:00': {
'1. open': '196.4100',
'2. high': '196.5075',
'3. low': '196.3800',
'4. close': '196.3800',
'5. volume': '4961'
}
}
}
将您的dict转换为tupples。然后使用索引访问元素。
print im['Time Series (1min)'].items()[0][1]['4. close'] # prints 196.3800
Python 2
print(list(a['Time Series (1min)'].items())[0][1]['4. close']) # prints 196.3800
对于 Python 3 ,这应该更改如下
a['Time Series (1min)'].items()
或者您可以遍历<app-header-layout>
可迭代
答案 1 :(得分:0)
您在自己的示例中几乎已经拥有它,只需将0
替换为实际日期。
im['Time Series (1min)']['2017-12-19 13:01:00']['4. close']
# output '196.3800'
编辑循环:
dict
的问题是,您没有为dict
编制索引,而是使用键访问项目。这是拥有一个关键值对的主要目的。
或者更正确的是,当您需要索引某些内容时,请不要使用dict
。
我建议您使用类似pandas
的内容。
import pandas as pd
# option 1
df = pd.DataFrame(ourl.json())
df.columns = ['Meta', 'TS'] # save time typing spaces
return df.TS[2]['4. close']
# option 2
df = pd.DataFrame(ourl.json())
return df.iloc[:, 1][2]['4. close']
# output
'196.3800'
这样,每次获取项目时都可以返回单个值,并通过索引返回该值。(部分)
P.S。你没有告诉我们ourl.json()
返回什么,我假设它在这里返回一个字典。特别是,你想要做的是正确编制索引,组织字符串声音对我来说有点混乱..因为我们实际上并没有组织字符串:)
答案 2 :(得分:0)
在不知道时间的情况下提取价格的另一种方法是使用带有json
包的import json
import urllib.request
def extract_json(f):
json_decode = json.load(f)
time_series = json_decode['Time Series (1min)']
for data in time_series:
print(time_series[data]['3. low'])
opener = urllib.request.FancyURLopener({})
url = "http://localhost:8092/sample_json.json"
f = opener.open(url)
extract_json(f)
包和一些循环:
{
"Time Series (1min)": {
"2017-12-19 13:01:00": {
"1. open": "196.4100",
"2. high": "196.5075",
"3. low": "196.3800",
"4. close": "196.3800",
"5. volume": "4961"
}
}
}
如果服务器上的输入是:
196.3800
运行脚本的结果是:
3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]
试过这个版本:
rand()