2013-04-09 32 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

尝试'htmltext ['data'] [0] ['price']' – kev 2013-04-09 00:35:17

回答

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”感到困惑。当我以这种方式使用json时,会不会有“u”? – Travis 2013-04-09 00:52:48

+2

@Travis:“u”只是表示它是一个Unicode字符串。它不是字符串本身的一部分,不仅仅是引号。 – abarnert 2013-04-09 00:53:32

+0

我明白了。谢谢。 – Travis 2013-04-09 00:55:12

0

你也可以这样做:

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

print get_data(htmltext, 'sku') 

检查使用默认参数。

干杯!