python自動(dòng)格式化json文件的方法
本文實(shí)例講述了python自動(dòng)格式化json文件的方法。分享給大家供大家參考。具體如下:
這里主要實(shí)現(xiàn)將代碼混亂的json文件格式化。
還有一小堆python常用算法代碼
完整實(shí)例代碼點(diǎn)擊此處本站下載。
class JsonFormatter: 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 def json_str(s): return '"'+s+'"' @staticmethod def get_source(name): with open(name,'r') as f: return ''.join(f.read().split()) def prepare(self): try: self.obj=eval(self.source) except: raise Exception('Invalid json string!') def line_intend(self,level=0): return '\n'+' '*self.intend*level def parse_dict(self,obj=None,intend_level=0): self.stack.append(self.line_intend(intend_level)+'{') intend_level+=1 for key,value in obj.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)+'}') def parse_list(self,obj=None,intend_level=0): self.stack.append(self.line_intend(intend_level)+'[') intend_level+=1 for item in obj: self.parse(item,intend_level) self.stack.append(',') self.stack.append(self.line_intend(intend_level-1)+']') def parse(self,obj,intend_level=0): if obj is None: self.stack.append('null') elif obj is True: self.stack.append('true') elif obj is False: self.stack.append('false') elif isinstance(obj,(int,long,float)): self.stack.append(str(obj)) elif isinstance(obj,str): self.stack.append(self.json_str(obj)) elif isinstance(obj,(list,tuple)): self.parse_list(obj,intend_level) elif isinstance(obj,dict): self.parse_dict(obj,intend_level) else: raise Exception('Invalid json type %s!' % obj) def render(self): self.parse(self.obj,0) res_file='good'+self.name res=''.join(self.stack) with open(res_file,'w') as f: f.write(res) print res if __name__=="__main__": jf=JsonFormatter(name="json.txt") jf.render()
希望本文所述對大家的Python程序設(shè)計(jì)有所幫助。
- 使用Python解析JSON數(shù)據(jù)的基本方法
- Python操作json數(shù)據(jù)的一個(gè)簡單例子
- python中將字典轉(zhuǎn)換成其json字符串
- Python處理json字符串轉(zhuǎn)化為字典的簡單實(shí)現(xiàn)
- 詳解Python使用simplejson模塊解析JSON的方法
- 深入理解Python對Json的解析
- Python對象轉(zhuǎn)JSON字符串的方法
- 深入解析Python編程中JSON模塊的使用
- Python3中的json模塊使用詳解
- Python json模塊使用實(shí)例
- Python實(shí)現(xiàn)針對json中某個(gè)關(guān)鍵字段進(jìn)行排序操作示例
相關(guān)文章
Python3.6安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法詳解
這篇文章主要介紹了Python3.6之安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02python [:3] 實(shí)現(xiàn)提取數(shù)組中的數(shù)
今天小編就為大家分享一篇python [:3] 實(shí)現(xiàn)提取數(shù)組中的數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11Django+Django-Celery+Celery的整合實(shí)戰(zhàn)
這篇文章主要介紹了Django+Django-Celery+Celery的整合實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01使用python+requests+pytest實(shí)現(xiàn)接口自動(dòng)化
這篇文章主要介紹了使用python+requests+pytest實(shí)現(xiàn)接口自動(dòng)化,在當(dāng)前互聯(lián)網(wǎng)產(chǎn)品迭代頻繁的背景下,回歸測試的時(shí)間越來越少,但接口自動(dòng)化測試因其實(shí)現(xiàn)簡單、維護(hù)成本低,容易提高覆蓋率等特點(diǎn),越來越受重視,需要的朋友可以參考下2023-08-08Python數(shù)據(jù)分析中Groupby用法之通過字典或Series進(jìn)行分組的實(shí)例
下面小編就為大家分享一篇Python數(shù)據(jù)分析中Groupby用法之通過字典或Series進(jìn)行分組的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12python實(shí)現(xiàn)兩個(gè)字典合并,兩個(gè)list合并
今天小編就為大家分享一篇python實(shí)現(xiàn)兩個(gè)字典合并,兩個(gè)list合并,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12python計(jì)算階乘的兩個(gè)函數(shù)用法
這篇文章主要介紹了python計(jì)算階乘的兩個(gè)函數(shù)用法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05