
今天用python解析一個(gè)文本文件,格式如下:
代碼如下:
[
{
"Key":"android.permission.ACCESS_CHECKIN_PROPERTIES",
"Title":"訪問(wèn)檢入屬性",
"Memo":"允許對(duì)檢入服務(wù)上傳的屬性進(jìn)行讀/寫(xiě)訪問(wèn)。普通應(yīng)用程序不能使用此權(quán)限。",
"Level":0
},
{
"Key":"android.permission.ACCESS_COARSE_LOCATION",
"Title":"大概位置",
"Memo":"訪問(wèn)大概的位置源(例如蜂窩網(wǎng)絡(luò)數(shù)據(jù)庫(kù))以確定手機(jī)的大概位置(如果可以)。惡意應(yīng)用程序可借此確定您所處的大概位置。",
"Level":1
},
{
"Key":"android.permission.ACCESS_COARSE_LOCATION",
"Title":"大概位置",
"Memo":"訪問(wèn)大概的位置源(例如蜂窩網(wǎng)絡(luò)數(shù)據(jù)庫(kù))以確定手機(jī)的大概位置(如果可以)。惡意應(yīng)用程序可借此確定您所處的大概位置。",
"Level":1
}
]
開(kāi)始采用open('filepath').readlines()的方法讀取,這樣讀取的內(nèi)容都存取到一個(gè)列表中,但是我要取每一個(gè){}中的內(nèi)容取不到,于是考慮用split(',')的方法分離開(kāi)來(lái),結(jié)果把每一個(gè){}里面的內(nèi)容也根據(jù)","分開(kāi)了。后來(lái)請(qǐng)教了網(wǎng)友,說(shuō)用json方式讀取。于是采用以下方式:
代碼如下:
#-*-encoding:utf-8-*-
import json
f = file(r'C:\Users\Tim\Desktop\test.json')
jsonobj = json.load(f)
#列表用序號(hào)來(lái)查詢
print jsonobj[0]['Memo']
f.close
運(yùn)行之后報(bào)以下錯(cuò)誤:
ValueError: No JSON object could be decoded
重新將json文件以UTF8無(wú)BOM方式保存了一下,運(yùn)行成功了。另外,對(duì)于讀取json string可以用以下方式:
代碼如下:
s = json.loads('{"name":"test", "type":{"name":"seq", "parameter":["1", "2"]}}')
print s
print s.keys()
print s["name"]
print s["type"]["name"]
print s["type"]["parameter"][1]
下面給出完整的讀取permission文件的代碼:
代碼如下:
#-*-coding:utf8-*-
import json
import codecs
def getperinfo(inputper):
f = file(r'C:\Users\Tim\Desktop\test.json')
jsonobj = json.load(f)
#print jsonobj[0]['Memo']
for permission in jsonobj:
#permission.values()獲取詞典的值
if permission.values()[2] == inputper:
print "permission name:%s\npermission info:%s" %(permission.values()[3],permission.values()[0])
f.close
if __name__ == '__main__':
#optparse采用預(yù)先定義好的選項(xiàng)來(lái)解析命令行參數(shù),optparse默認(rèn)就是解析命令行參數(shù)的。
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-p", "--permission", dest="permission",help="input permission")
(options, args) = parser.parse_args()
#options.permission為輸入的permission
getperinfo(options.permission)
執(zhí)行示例如下:
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com