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的Django框架中if标签的相关使用
Jul 15 Python
python实现给数组按片赋值的方法
Jul 28 Python
使用Python写CUDA程序的方法
Mar 27 Python
Python探索之爬取电商售卖信息代码示例
Oct 27 Python
python正则实现计算器功能
Dec 14 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
浅析Python 引号、注释、字符串
Jul 25 Python
TensorFlow绘制loss/accuracy曲线的实例
Jan 21 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
Oct 18 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正则preg_replace_callback函数用法实例
2015/06/01 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
JS查看对象功能代码
2008/04/25 Javascript
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
python模块之StringIO使用示例
2015/04/08 Python
Python实现合并字典的方法
2015/07/07 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
python读写csv文件方法详细总结
2019/07/05 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
python如何停止递归
2020/09/09 Python
Python-split()函数实例用法讲解
2020/12/18 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
村委会贫困证明范本
2014/09/17 职场文书
周年庆典答谢词
2015/01/20 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL