99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀使用Python解析JSON數(shù)據(jù)的基本方法
使用Python解析JSON數(shù)據(jù)的基本方法
2017-11-29
收藏

使用Python解析JSON數(shù)據(jù)的基本方法

Python的json模塊提供了一種很簡(jiǎn)單的方式來(lái)編碼和解碼JSON數(shù)據(jù)。 其中兩個(gè)主要的函數(shù)是 json.dumps() 和 json.loads() , 要比其他序列化函數(shù)庫(kù)如pickle的接口少得多。 下面演示如何將一個(gè)Python數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON:    
import json
 
data = {
'name' : 'ACME',
'shares' : 100,
'price' : 542.23
}
 
json_str = json.dumps(data)

下面演示如何將一個(gè)JSON編碼的字符串轉(zhuǎn)換回一個(gè)Python數(shù)據(jù)結(jié)構(gòu):    
data = json.loads(json_str)

如果你要處理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 來(lái)編碼和解碼JSON數(shù)據(jù)。例如:
    
# Writing JSON data
with open('data.json', 'w') as f:
 json.dump(data, f)
 
# Reading data back
with open('data.json', 'r') as f:
 data = json.load(f)

用法示例:
相對(duì)于python解析XML來(lái)說(shuō),我還是比較喜歡json的格式返回,現(xiàn)在一般的api返回都會(huì)有json與XML格式的選擇,json的解析起來(lái)個(gè)人覺(jué)得相對(duì)簡(jiǎn)單些
先看一個(gè)簡(jiǎn)單的豆瓣的圖書(shū)查詢的api返回
http://api.douban.com/v2/book/isbn/9787218087351
    
{"rating":{"max":10,"numRaters":79,"average":"9.1","min":0},"subtitle":"","author":["野夫"],"pubdate":"2013-9","tags":[{"count":313,"name":"野夫","title":"野夫"},{"count":151,"name":"散文隨筆","title":"散文隨筆"},{"count":83,"name":"身邊的江湖","title":"身邊的江湖"},{"count":82,"name":"土家野夫","title":"土家野夫"},{"count":70,"name":"散文","title":"散文"},{"count":44,"name":"中國(guó)文學(xué)","title":"中國(guó)文學(xué)"},{"count":43,"name":"隨筆","title":"隨筆"},{"count":38,"name":"中國(guó)現(xiàn)當(dāng)代文學(xué)","title":"中國(guó)現(xiàn)當(dāng)代文學(xué)"}],"origin_title":"","image":"http://img5.douban.com/mpic/s27008269.jpg","binding":"","translator":[],"catalog":"自序 讓記憶抵抗n001 掌瓢黎爺n024 遺民老譚n039 亂世游擊:表哥的故事n058 綁赴刑場(chǎng)的青春n076 風(fēng)住塵香花已盡n083 “酷客”李斯n100 散材毛喻原n113 頹世華筵憶黃門(mén)n122 球球外傳:n一個(gè)時(shí)代和一只小狗的際遇n141 童年的恐懼與仇恨n151 殘忍教育n167 湖山一夢(mèng)系平生n174 香格里拉散記n208 民國(guó)屐痕","pages":"256","images":{"small":"http://img5.douban.com/spic/s27008269.jpg","large":"http://img5.douban.com/lpic/s27008269.jpg","medium":"http://img5.douban.com/mpic/s27008269.jpg"},"alt":"http://book.douban.com/subject/25639223/","id":"25639223","publisher":"廣東人民出版社","isbn10":"7218087353","isbn13":"9787218087351","title":"身邊的江湖","url":"http://api.douban.com/v2/book/25639223","alt_title":"","author_intro":"鄭世平,筆名野夫,網(wǎng)名土家野夫。畢業(yè)于武漢大學(xué),曾當(dāng)過(guò)警察、囚徒、書(shū)商。曾出版歷史小說(shuō)《父親的戰(zhàn)爭(zhēng)》、散文集《江上的母親》(獲臺(tái)北2010國(guó)際書(shū)展非虛構(gòu)類圖書(shū)大獎(jiǎng),是該獎(jiǎng)項(xiàng)第一個(gè)大陸得主)、散文集《鄉(xiāng)關(guān)何處》(被新浪網(wǎng)、鳳凰網(wǎng)、新華網(wǎng)分別評(píng)為2012年年度好書(shū))。","summary":"1.野夫書(shū)稿中被刪減最少,最能體現(xiàn)作者觀點(diǎn)、情感的作品。n2.文字凝練,具有極強(qiáng)的感染力。以一枝孤筆書(shū)寫(xiě)那些就在你我身邊的大歷史背景下普通人的生活變遷。n3. 柴靜口中“一半像警察,一半像土匪”的野夫,以其特有的韻律表達(dá)世間的歡笑和悲苦。","price":"32元"}

看起來(lái)別提多亂了,現(xiàn)在我們將其格式進(jìn)行簡(jiǎn)單的整理    
{
rating: {
 max: 10,
 numRaters: 79,
 average: "9.1",
 min: 0
},
subtitle: "",
author: [
 "野夫"
],
pubdate: "2013-9",
tags: [
 {
 count: 313,
 name: "野夫",
 title: "野夫"
 },
 {
 count: 151,
 name: "散文隨筆",
 title: "散文隨筆"
 },
 {
 count: 83,
 name: "身邊的江湖",
 title: "身邊的江湖"
 },
 {
 count: 82,
 name: "土家野夫",
 title: "土家野夫"
 },
 {
 count: 70,
 name: "散文",
 title: "散文"
 },
 {
 count: 44,
 name: "中國(guó)文學(xué)",
 title: "中國(guó)文學(xué)"
 },
 {
 count: 43,
 name: "隨筆",
 title: "隨筆"
 },
 {
 count: 38,
 name: "中國(guó)現(xiàn)當(dāng)代文學(xué)",
 title: "中國(guó)現(xiàn)當(dāng)代文學(xué)"
 }
],
origin_title: "",
image: "http://img5.douban.com/mpic/s27008269.jpg",
binding: "",
translator: [ ],
catalog: "自序 讓記憶抵抗 001 掌瓢黎爺 024 遺民老譚 039 亂世游擊:表哥的故事 058 綁赴刑場(chǎng)的青春 076 風(fēng)住塵香花已盡 083 “酷客”李斯 100 散材毛喻原 113 頹世華筵憶黃門(mén) 122 球球外傳: 一個(gè)時(shí)代和一只小狗的際遇 141 童年的恐懼與仇恨 151 殘忍教育 167 湖山一夢(mèng)系平生 174 香格里拉散記 208 民國(guó)屐痕",
pages: "256",
images: {
 small: "http://img5.douban.com/spic/s27008269.jpg",
 large: "http://img5.douban.com/lpic/s27008269.jpg",
 medium: "http://img5.douban.com/mpic/s27008269.jpg"
},
alt: "http://book.douban.com/subject/25639223/",
id: "25639223",
publisher: "廣東人民出版社",
isbn10: "7218087353",
isbn13: "9787218087351",
title: "身邊的江湖",
url: "http://api.douban.com/v2/book/25639223",
alt_title: "",
author_intro: "鄭世平,筆名野夫,網(wǎng)名土家野夫。畢業(yè)于武漢大學(xué),曾當(dāng)過(guò)警察、囚徒、書(shū)商。曾出版歷史小說(shuō)《父親的戰(zhàn)爭(zhēng)》、散文集《江上的母親》(獲臺(tái)北2010國(guó)際書(shū)展非虛構(gòu)類圖書(shū)大獎(jiǎng),是該獎(jiǎng)項(xiàng)第一個(gè)大陸得主)、散文集《鄉(xiāng)關(guān)何處》(被新浪網(wǎng)、鳳凰網(wǎng)、新華網(wǎng)分別評(píng)為2012年年度好書(shū))。",
summary: "1.野夫書(shū)稿中被刪減最少,最能體現(xiàn)作者觀點(diǎn)、情感的作品。 2.文字凝練,具有極強(qiáng)的感染力。以一枝孤筆書(shū)寫(xiě)那些就在你我身邊的大歷史背景下普通人的生活變遷。 3. 柴靜口中“一半像警察,一半像土匪”的野夫,以其特有的韻律表達(dá)世間的歡笑和悲苦。",
price: "32元"
}

下面我們通過(guò)python來(lái)取出想要的信息,比如我們想要rating,images里的large和summary    
import urllib2
import json
 
html = urllib2.urlopen(r'http://api.douban.com/v2/book/isbn/9787218087351')
 
hjson = json.loads(heml.read())
 
print hjson['rating']
print hjson['images']['large']
print hjson['summary']

是不是很簡(jiǎn)單,其實(shí)只要把返回的json格式嵌套搞清楚,json還是比較簡(jiǎn)單的


數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }