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中__init__和__new__的区别详解
Jul 09 Python
Python实现简单多线程任务队列
Feb 27 Python
python使用pandas实现数据分割实例代码
Jan 25 Python
python生成密码字典的方法
Jul 06 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
python2和python3实现在图片上加汉字的方法
Aug 22 Python
python对文件的操作方法汇总
Feb 28 Python
Python selenium模块实现定位过程解析
Jul 09 Python
python如何将图片转换素描画
Sep 08 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
看看如何用Python绘制小米新版天价logo
Apr 20 Python
python中的plt.cm.Paired用法说明
May 31 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
header跳转和include包含问题详解
2012/09/08 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
Python实现堆排序的方法详解
2016/05/03 Python
python django 实现验证码的功能实例代码
2017/05/18 Python
Python实现注册登录系统
2017/08/08 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
python画图的函数用法以及技巧
2019/06/28 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
Python reversed函数及使用方法解析
2020/03/17 Python
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python