Python Как извлечь последнюю текущую цену акции из словаря и поместить ее в переменную?

Я пытаюсь получить текущую цену акции, а затем поместить ее в переменную для запуска операторов if / else. Я использовал Google API для получения текущих цен акций, но не могу понять, как поместить их в переменную. Спасибо!

import json
import sys

try:
    from urllib.request import Request, urlopen
except ImportError:  #python 2
    from urllib2 import Request, urlopen

googleFinanceKeyToFullName = {
    u'id'     : u'ID',
    u't'      : u'StockSymbol',
    u'e'      : u'Index',
    u'l'      : u'LastTradePrice',
    u'l_cur'  : u'LastTradeWithCurrency',
    u'ltt'    : u'LastTradeTime',
    u'lt_dts' : u'LastTradeDateTime',
    u'lt'     : u'LastTradeDateTimeLong',
    u'div'    : u'Dividend',
    u'yld'    : u'Yield'
}

def buildUrl(symbols):
    symbol_list = ','.join([symbol for symbol in symbols])
    #a deprecated but still active & correct api
    return 'http://finance.google.com/finance/info?client=ig&q=' \
        + symbol_list

def request(symbols):
    url = buildUrl(symbols)
    req = Request(url)
    resp = urlopen(req)
    #remove special symbols such as the pound symbol
    content = resp.read().decode('ascii', 'ignore').strip()
    content = content[3:]
    return content

def replaceKeys(quotes):
    global googleFinanceKeyToFullName
    quotesWithReadableKey = []
    for q in quotes:
        qReadableKey = {}
        for k in googleFinanceKeyToFullName:
            if k in q:
                qReadableKey[googleFinanceKeyToFullName[k]] = q[k]
        quotesWithReadableKey.append(qReadableKey)
    return quotesWithReadableKey

def getQuotes(symbols):

    if type(symbols) == type('str'):
        symbols = [symbols]
    content = json.loads(request(symbols))
    return replaceKeys(content);

if __name__ == '__main__':
    try:
        symbols = sys.argv[1]
    except:
        symbols = "GOOG,AAPL,MSFT,AMZN,SBUX"

    symbols = symbols.split(',')

    try:
        print(json.dumps(getQuotes(symbols), indent=2))
    except:
        print("Fail")

1 ответ

Решение

Вы можете получить последнюю текущую цену акций из словаря и поместить ее в переменную, скажем, price,

изменив последнюю часть кода на

 try:
      quotes = getQuotes(symbols)
      price = quotes[-1]['LastTradePrice']  # -1 means last in a  list
      print(price)
  except Exception as e:
      print(e)

но это очень ненадежно, потому что, если порядок цен изменяется, вы получите цену для другой акции.

Что вы должны сделать, это научиться определять структуру данных, которая подходит для решения вашей проблемы.

Другие вопросы по тегам