2013-04-09 40 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') 

檢查使用默認參數。

乾杯!