您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何在Python中加載帶有注釋的Json文件,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
python的數據類型:1. 數字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數據類型,集合中可以放任何數據類型。5. 元組,元組用”()”標識,內部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復的數據組合。
程序實現
# encoding: utf-8 import json import re import sys reload(sys) sys.setdefaultencoding('utf8') CAUTION_PRINT_HEAD = 'caution: ' # 創建一個xstr類,用于處理從文件中讀出的字符串 class xstr: def __init__(self, instr): self.instr = instr # 刪除“//”標志后的注釋 def rmCmt(self): qtCnt = cmtPos = slashPos = 0 rearLine = self.instr # rearline: 前一個“//”之后的字符串, # 雙引號里的“//”不是注釋標志,所以遇到這種情況,仍需繼續查找后續的“//” while rearLine.find('//') >= 0: # 查找“//” slashPos = rearLine.find('//') cmtPos += slashPos # print 'slashPos: ' + str(slashPos) headLine = rearLine[:slashPos] while headLine.find('"') >= 0: # 查找“//”前的雙引號 qtPos = headLine.find('"') if not self.isEscapeOpr(headLine[:qtPos]): # 如果雙引號沒有被轉義 qtCnt += 1 # 雙引號的數量加1 headLine = headLine[qtPos+1:] # print qtCnt if qtCnt % 2 == 0: # 如果雙引號的數量為偶數,則說明“//”是注釋標志 # print self.instr[:cmtPos] return self.instr[:cmtPos] rearLine = rearLine[slashPos+2:] # print rearLine cmtPos += 2 # print self.instr return self.instr # 判斷是否為轉義字符 def isEscapeOpr(self, instr): if len(instr) <= 0: return False cnt = 0 while instr[-1] == '\\': cnt += 1 instr = instr[:-1] if cnt % 2 == 1: return True else: return False # 從json文件的路徑JsonPath讀取該文件,返回json對象 def loadJson(JsonPath): try: srcJson = open(JsonPath, 'r') except: print CAUTION_PRINT_HEAD + 'cannot open ' + JsonPath quit() dstJsonStr = '' for line in srcJson.readlines(): if not re.match(r'\s*//', line) and not re.match(r'\s*\n', line): xline = xstr(line) dstJsonStr += xline.rmCmt() # print dstJsonStr dstJson = {} try: dstJson = json.loads(dstJsonStr) return dstJson except: print CAUTION_PRINT_HEAD + JsonPath + ' is not a valid json file' quit() # 帶縮進地在屏幕輸出json字符串 def printRes(resStr): resStr = resStr.replace(',', ',\n') resStr = resStr.replace('{', '{\n') resStr = resStr.replace(':{', ':\n{') resStr = resStr.replace('}', '\n}') resStr = resStr.replace('[', '\n[\n') resStr = resStr.replace(']', '\n]') resStr = resStr resArray = resStr.split('\n') preBlank = '' for line in resArray: if len(line) == 0: continue lastChar = line[len(line)-1] lastTwoChars = line[len(line)-2:] if lastChar in {'}', ']'} or lastTwoChars in {'},', '],'}: preBlank = preBlank[:len(preBlank)-2] try: print preBlank + line.decode('utf-8') except: print(preBlank + '[%This line cannot be decoded%]') if lastChar == '{' or lastChar == '[': preBlank += ' '*2
關于如何在Python中加載帶有注釋的Json文件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。