JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個(gè)子集。 JSON采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。
今天用python解析一個(gè)文本文件,格式如下:
[{"Key":"android.permission.ACCESS_CHECKIN_PROPERTIES","Title":"訪問檢入屬性","Memo":"允許對檢入服務(wù)上傳的屬性進(jìn)行讀/寫訪問。普通應(yīng)用程序不能使用此權(quán)限。","Level":0},{"Key":"android.permission.ACCESS_COARSE_LOCATION","Title":"大概位置","Memo":"訪問大概的位置源(例如蜂窩網(wǎng)絡(luò)數(shù)據(jù)庫)以確定手機(jī)的大概位置(如果可以)。惡意應(yīng)用程序可借此確定您所處的大概位置。","Level":1},{"Key":"android.permission.ACCESS_COARSE_LOCATION","Title":"大概位置","Memo":"訪問大概的位置源(例如蜂窩網(wǎng)絡(luò)數(shù)據(jù)庫)以確定手機(jī)的大概位置(如果可以)。惡意應(yīng)用程序可借此確定您所處的大概位置。","Level":1}]開始采用open('filepath').readlines()的方法讀取,這樣讀取的內(nèi)容都存取到一個(gè)列表中,但是我要取每一個(gè){}中的內(nèi)容取不到,于是考慮用split(',')的方法分離開來,結(jié)果把每一個(gè){}里面的內(nèi)容也根據(jù)","分開了。后來請教了網(wǎng)友,說用json方式讀取。于是采用以下方式:
#-*-encoding:utf--*-import jsonf = file(r'C:/Users/Tim/Desktop/test.json')jsonobj = json.load(f)#列表用序號來查詢print jsonobj[]['Memo']f.close
運(yùn)行之后報(bào)以下錯誤:
ValueError: No JSON object could be decoded
重新將json文件以UTF8無BOM方式保存了一下,運(yùn)行成功了。
另外,對于讀取json string可以用以下方式:
s = json.loads('{"name":"test", "type":{"name":"seq", "parameter":["", ""]}}')print sprint s.keys()print s["name"]print s["type"]["name"]print s["type"]["parameter"][]以上內(nèi)容給大家介紹了Python解析json文件相關(guān)知識,希望對大家有所幫助!
新聞熱點(diǎn)
疑難解答
圖片精選