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中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
深入理解Django中内置的用户认证
Oct 06 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
python 获取图片分辨率的方法
Jan 08 Python
Flask框架单例模式实现方法详解
Jul 31 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
Aug 05 Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 Python
pip install 使用国内镜像的方法示例
Apr 03 Python
详解Python IO口多路复用
Jun 17 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
python des,aes,rsa加解密的实现
Jan 16 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中的登陆login
2007/01/18 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
jQuery给表格添加分页效果
2017/03/02 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
Random 在 Python 中的使用方法
2018/08/09 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
vivo智能手机官方商城:vivo
2016/09/22 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
统计员岗位职责
2013/11/14 职场文书
十一酒店活动方案
2014/02/20 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
2015年元旦活动总结
2014/05/09 职场文书
财务工作检讨书
2014/10/29 职场文书
欠条范文
2015/07/03 职场文书
网络营销实训总结
2015/08/03 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技