python自动格式化json文件的方法


Posted in Python onMarch 11, 2015

本文实例讲述了python自动格式化json文件的方法。分享给大家供大家参考。具体如下:

这里主要实现将代码混乱的json文件格式化。
还有一小堆python常用算法代码

完整实例代码点击此处本站下载。

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程序设计有所帮助。

Python 相关文章推荐
Python编程语言的35个与众不同之处(语言特征和使用技巧)
Jul 07 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
CentOS中升级Python版本的方法详解
Jul 10 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
python实现的汉诺塔算法示例
Oct 23 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
新年福利来一波之Python轻松集齐五福(demo)
Jan 20 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
Python同时处理多个异常的方法
Jul 28 Python
Python requests上传文件实现步骤
Sep 15 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
python处理csv数据的方法
Mar 11 #Python
python模拟鼠标拖动操作的方法
Mar 11 #Python
Python创建系统目录的方法
Mar 11 #Python
Python实现从订阅源下载图片的方法
Mar 11 #Python
Python获取网页上图片下载地址的方法
Mar 11 #Python
Python实现从百度API获取天气的方法
Mar 11 #Python
Python计算回文数的方法
Mar 11 #Python
You might like
php 图片上传类代码
2009/07/17 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
js代码实现微博导航栏
2015/07/30 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
javascript数组快速打乱重排的方法
2014/01/02 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
validform表单验证的实现方法
2019/03/08 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Linux下为不同版本python安装第三方库
2016/08/31 Python
python构建自定义回调函数详解
2017/06/20 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
中国最大的团购网站:聚划算
2016/09/21 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
一道SQL面试题
2012/12/31 面试题
应届大学生求职信
2013/12/01 职场文书
口头翻译求职人自荐信
2013/12/07 职场文书
公司清洁工岗位职责
2013/12/14 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
数学教师个人总结
2015/02/06 职场文书
铁人观后感
2015/06/16 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
学生病假条范文
2015/08/17 职场文书
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers