2013-04-09 3 views
0

У меня есть простой код выскабливание:Python и JSON, Как распечатать данные [ «ключ»]

import urllib 
import re 
import json 

htmltext = urllib.urlopen("http://dx.com/p/GetProductInfoRealTime?skus=48616") 

htmltext = json.load(htmltext) 

print htmltext 

Он выводит:

{u'data': [{u'sku': 48616, u'isShowDiscount': False, u'currencycode': u'USD', u'issoldout': False, u'adddate': u'10/28/2010', u'discount': 0, u'currencysymbol': u'US$', u'price': u'4.20', u'listprice': u''}], u'success': True} 

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

Я хотел бы

print htmltext["sku"] 
48616 

или

print htmltext["price"] 
4.20 

Любые идеи по этому поводу?

+1

try 'htmltext ['data'] [0] ['price']' – kev

ответ

4

То, что вы есть словарь с ключом data,

Таким образом получить доступ к внутренней список с:

htmltext[u"data"] 

Тогда для доступа "sku", вам необходимо получить доступ к словарю в списке в "data" значение.

inner_dict = htmltext[u"data"][0] 

print(inner_dict[u"sku"]) 

Вы могли бы определить функцию, например:

def get_data(dict_index, key): 
     return htmltext[u"data"][dict_index][key] 

print(get_data(0, u"sku")) 
+0

Функция работает отлично, я запутался в «u». Будет ли всегда «u», когда я использую json таким образом? – Travis

+2

@Travis: 'u' просто означает, что это строка Unicode. Это не часть самой строки, не более, чем кавычки. – abarnert

+0

Я вижу. Спасибо. – Travis

0

Вы также можете сделать:

def get_data(htmltext, sub_key, key='data', indx=0): 
    return htmltext[key][indx][sub_key] 

print get_data(htmltext, 'sku') 

Проверьте использование аргументов по умолчанию.

Cheers!

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