2015-05-09 9 views
2

Использование модуля Krakenex Python, я втягивая цены от Кракена API и прибывает в следующем формате:Очистка данных сырье цена определенного API, который получили в словаре формате (Python)

{u'result': {u'XXBTZEUR': {u'a': [u'214.79000', u'3'], u'c': [u'214.79416', u'2.27789000'], u'b': [u'214.15262', u'7'], u'h': [u'217.36000', u'217.36000'], u'l': [u'210.99999', u'210.99999'], u'o': u'214.01000', u'p': [u'213.77705', u'213.51830'], u't': [1360, 1499], u'v': [u'872.87753147', u'1036.51819483']}}, u'error': []} 

(это это выход «бегущей строки» в коде ниже)

со словарем манипуляции я могу получить последнюю цену закрытия, в этом случае 214,79416:

last_close_raw = ticker["result"]["XXBTZEUR"]["c"] 
last_close = last_close_raw[0] 

Кажется, это работает до тех пор, пока я не подаю цены закрытия в список, после чего снова появится u. Это полный код:

from time import strftime 
import krakenex 

k = krakenex.API() 

x = [] 
y = [] 

count = 0 

while count <= 9: 

    ticker = k.query_public('Ticker', {'pair': 'XXBTZEUR'}) 

    last_close_raw = ticker["result"]["XXBTZEUR"]["c"] 
    last_close = last_close_raw[0] 

    timenow = strftime("%H:%M:%S") 

    print "%s ----> %s\n----------(%s)" % (timenow, last_close, count) 

    x.append(count) 
    y.append(last_close) 

    count += 1 

print "x = ", x 
print "y = ", y 

Это выход:

23:07:03 ----> 214.79416 
----------(0) 
23:07:05 ----> 214.79416 
----------(1) 
23:07:06 ----> 214.79416 
----------(2) 
23:07:07 ----> 214.79416 
----------(3) 
23:07:07 ----> 214.79416 
----------(4) 
23:07:08 ----> 214.79416 
----------(5) 
23:07:09 ----> 214.79416 
----------(6) 
23:07:10 ----> 214.79416 
----------(7) 
23:07:11 ----> 214.79416 
----------(8) 
23:07:12 ----> 214.79416 
----------(9) 
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
y = [u'214.79416', u'214.79416', u'214.79416', u'214.79416', u'214.79416', u'214.79416', u'214.79416', u'214.79416', u'214.79416', u'214.79416'] 

Почему список вернуть и '? Я даже попытался удалить первые два символа из каждой цены, но это удаляет первые две цифры, а не u. Мысли?

ответ

2

Что вас беспокоит, разница между строкой Unicode и строкой ASCII. Чтобы удалить u использования encode:

>>> a=u'214.79416' 
>>> type(a) 
<type 'unicode'> 
>>> b = a.encode('ascii','ignore') 
>>> type(b) 
<type 'str'> 
>>> b 
'214.79416' 

Надеется, что это будет ЛФВЭ.

+0

Спасибо! Это сработало, как и str (unicode (last_close), который я нашел в ссылке, размещенной alfasin –