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函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
May 18 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
Python内置模块hashlib、hmac与uuid用法分析
Feb 12 Python
python制作朋友圈九宫格图片
Nov 03 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
python 链接sqlserver 写接口实例
Mar 11 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
python 抓取知乎指定回答下视频的方法
Jul 09 Python
基于Python pyecharts实现多种图例代码解析
Aug 10 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 Python
Python中zipfile压缩包模块的使用
May 14 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
解析php取整的几种方式
2013/06/25 PHP
Destoon模板制作简明教程
2014/06/20 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
大家未必知道的Js技巧收藏
2008/04/07 Javascript
简明json介绍
2008/09/28 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
python3图片转换二进制存入mysql
2013/12/06 Python
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
使用TensorFlow实现SVM
2018/09/06 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
电子商务专业个人的自我评价
2013/12/19 职场文书
个人务虚会发言材料
2014/10/20 职场文书
安全承诺书格式范本
2015/04/28 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
心理学培训心得体会
2016/01/22 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书