python自动格式化json文件的方法
本文实例讲述了python自动格式化json文件的方法。分享给大家供大家参考。具体如下:
这里主要实现将代码混乱的json文件格式化。
还有一小堆python常用算法代码
完整实例代码点击此处本站下载。
classJsonFormatter: def__init__(self,intend=4,name=""): self.name=name self.intend=intend self.stack=[] self.obj=None self.source=self.get_source(name) self.prepare() @staticmethod defjson_str(s): return'"'+s+'"' @staticmethod defget_source(name): withopen(name,'r')asf: return''.join(f.read().split()) defprepare(self): try: self.obj=eval(self.source) except: raiseException('Invalidjsonstring!') defline_intend(self,level=0): return'\n'+''*self.intend*level defparse_dict(self,obj=None,intend_level=0): self.stack.append(self.line_intend(intend_level)+'{') intend_level+=1 forkey,valueinobj.items(): key=self.json_str(str(key)) self.stack.append(self.line_intend(intend_level)+key+':') self.parse(value,intend_level) self.stack.append(',') self.stack.append(self.line_intend(intend_level-1)+'}') defparse_list(self,obj=None,intend_level=0): self.stack.append(self.line_intend(intend_level)+'[') intend_level+=1 foriteminobj: self.parse(item,intend_level) self.stack.append(',') self.stack.append(self.line_intend(intend_level-1)+']') defparse(self,obj,intend_level=0): ifobjisNone: self.stack.append('null') elifobjisTrue: self.stack.append('true') elifobjisFalse: self.stack.append('false') elifisinstance(obj,(int,long,float)): self.stack.append(str(obj)) elifisinstance(obj,str): self.stack.append(self.json_str(obj)) elifisinstance(obj,(list,tuple)): self.parse_list(obj,intend_level) elifisinstance(obj,dict): self.parse_dict(obj,intend_level) else: raiseException('Invalidjsontype%s!'%obj) defrender(self): self.parse(self.obj,0) res_file='good'+self.name res=''.join(self.stack) withopen(res_file,'w')asf: f.write(res) printres if__name__=="__main__": jf=JsonFormatter(name="json.txt") jf.render()
希望本文所述对大家的Python程序设计有所帮助。