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