def _normalize(cls, value): value = value.strip() if value == "--": value = None elif "-" in value and not value.startswith("-"): value = int_date.to_int_date(value) elif len(value) > 0: if "," in value: value = value.replace(",", "") value = float(value) return value
def _parse(cls, body): if body.startswith(cls._PREFIX): body = body.replace(cls._PREFIX, "") if body.endswith(cls._SUFFIX): body = body.replace(cls._SUFFIX, "") stock_map = json.loads(body) stocks = DataFrame(columns=TRADE_DETAIL_COLUMNS) for name, stock in iteritems(stock_map): s_date, s_time = stock["time"].split(" ") data = [ stock["name"], stock["open"], stock["yestclose"], stock["price"], stock["high"], stock["low"], stock["volume"], stock["turnover"], stock["bidvol1"], stock["bid1"], stock["bidvol2"], stock["bid2"], stock["bidvol3"], stock["bid3"], stock["bidvol4"], stock["bid4"], stock["bidvol5"], stock["bid5"], stock["askvol1"], stock["ask1"], stock["askvol2"], stock["ask2"], stock["askvol3"], stock["ask3"], stock["askvol4"], stock["ask4"], stock["askvol5"], stock["ask5"], int_date.to_int_date(s_date), s_time, ] index = "{}{}".format(stock["type"].lower(), stock["symbol"]) stocks.ix[index] = data return stocks
def _parse(cls, body): stocks = body.split(';') ret = DataFrame(columns=TRADE_DETAIL_COLUMNS) for stock in stocks: stock = stock.strip() if len(stock) == 0: continue m = re.match('var hq_str_(.*)="(.*)"', stock) if m is None: raise ValueError( "response text is not valid: {}".format(stock)) index, data = m.group(1, 2) if len(data) == 0: log.info("data for stock %s is empty, skip.", index) continue data_array = data.split(',')[:32] result = [data_array[0]] result.extend(map(float, data_array[1:6])) result.extend(map(float, data_array[8:30])) result.extend( [int_date.to_int_date(data_array[30]), data_array[31]]) ret.ix[index] = result return ret
def _parse(cls, body): stocks = body.split(';') ret = DataFrame(columns=TRADE_DETAIL_COLUMNS) for stock in stocks: stock = stock.strip() if len(stock) == 0: continue m = re.match('var hq_str_(.*)="(.*)"', stock) if m is None: raise ValueError("response text is not valid: {}" .format(stock)) index, data = m.group(1, 2) if len(data) == 0: log.info("data for stock %s is empty, skip.", index) continue data_array = data.split(',')[:32] result = [data_array[0]] result.extend(map(float, data_array[1:6])) result.extend(map(float, data_array[8:30])) result.extend([int_date.to_int_date(data_array[30]), data_array[31]]) ret.ix[index] = result return ret
def test_to_int_date_str_error(self): with self.assertRaises(ValueError): int_date.to_int_date('20151301')
def test_to_int_date_unicode(self): date = int_date.to_int_date(u'2015/11/23') assert_that(date, equal_to(20151123))
def test_to_int_date_str_2(self): date = int_date.to_int_date('2015/11/23') assert_that(date, equal_to(20151123))
def test_to_int_date_str_1(self): date = int_date.to_int_date('2015-1-3') assert_that(date, equal_to(20150103))
def test_to_int_date_none(self): date = int_date.to_int_date(None) assert_that(date, none())
def test_to_int_date_int_input(self): date = int_date.to_int_date(19831102) assert_that(date, equal_to(19831102))
def test_to_int_date(self): date = int_date.to_int_date(datetime.datetime(2015, 5, 21)) assert_that(date, equal_to(20150521))