2016-02-17 3 views
1

Я пытаюсь разобрать поток zmq в клиентском приложении. Поток выглядит следующим образом:Python parse panda zmq stream

{"tick": {"instrument":"EUR_GBP","time":"2016-02-17T16:53:45.616062Z","bid":0.77791,"ask":0.77807}} 

Я попытался это:

def parse_tick_data(self, line): 
     dt_format = "%Y-%m-%dT%H:%M:%S.%fZ" 
     time = datetime.strptime(dict_data["time"], dt_format) 
     ask = float(dict_data["ask"]) 
     bid = float(dict_data["bid"]) 
     instrument = dict_data["instrument"] 
     return time, instrument, bid, ask 

time, symbol, bid, ask = self.parse_tick_data(line["tick"]) 
print(bid,ask) 

Но получить следующее сообщение об ошибке:

time, symbol, bid, ask = self.parse_tick_data(line["tick"]) 
TypeError: string indices must be integers, not str 

Что мне не хватает?

+0

Код форматирования/ошибки для улучшения читаемости – dampier

ответ

0

В вашем коде line тип переменной String, вы не можете получить доступ к строковым индексам над строкой, как в line["tick"]. Вы можете получить доступ к целочисленным индексам по строке и вернуть символ по данному индексу.

+0

Благодарим за быстрый ответ. Я понял ошибку, но я не понимаю, как я могу изменить ответ на остальные api/zmq? – Locust

+0

Вам нужно будет предоставить код вашего запроса и ответа, если вы хотите получить помощь по этой части. – Forge

Смежные вопросы