Переформатирование выходного Python - PullRequest
0 голосов
/ 07 мая 2019

В настоящее время я пытаюсь запросить данные из API IB, но у меня небольшая проблема с форматированием.

API дает мне следующий вывод:

AAPL; 20190507 16:20:00; price; price; price; price; number

Я хотел быданные для возврата в виде:

AAPL; 20190507; 16:20:00; price; price; price; price; number

Я использую следующий код

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract


class TestApp(EWrapper, EClient):
    def __init__(self):
        EClient.__init__(self, self)

    def error(self, reqId, errorCode, errorString):
        print("error: ", reqId, " ", errorCode, " ", errorString)

    def historicalData(self, reqId, bar):
        print("AAPL", ";", bar.date, ";", bar.open, ";", bar.high, ";", bar.low, ";", bar.close, ";", bar.volume)

def main():
    app = TestApp()

    app.connect("127.0.0.1", 7497, 0)

    contract = Contract ()
    contract.symbol = "AAPL"
    contract.secType = "STK"
    contract.exchange = "SMART"
    contract.currency = "USD"
    contract.primaryExchange = "NASDAQ"

    app.reqHistoricalData(0, contract, "", "1 D", "1 min", "TRADES", 0, 1, False, [])

    app.run()

if __name__ == "__main__":
    main()

bar.date в этом случае дает мне дату и время

print("AAPL", ";", bar.date, ";", bar.open, ";", bar.high, ";", bar.low, ";", bar.close, ";", bar.volume)

Может ли кто-нибудь помочь мне с этим?

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Как я понял, bar.date содержит "20190507 16:20:00".

Таким образом, вы можете заменить bar.date на "; ".join(bar.date.split(" ")) в последнем print(), который вы указали.

0 голосов
/ 07 мая 2019

Попробуйте это:

'; '.join(bar.date.split(' '))

Или:

bar.date.replace(' ', '; ')

Оба из них заменят пробел в выходных данных даты / времени точкой с запятой и пробелом.

...