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实现简单EXCEL数据统计的实例
Jan 24 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
python3安装pip3(install pip3 for python 3.x)
Apr 03 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
python实现五子棋人机对战游戏
Mar 25 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
Django 5种类型Session使用方法解析
Apr 29 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 Python
Python如何执行精确的浮点数运算
Jul 31 Python
Python将list元素转存为CSV文件的实现
Nov 16 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 Python
Pytest中skip skipif跳过用例详解
Jun 30 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 Mysql编程之高级技巧
2008/08/27 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
php利用事务处理转账问题
2015/04/22 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Golang与python线程详解及简单实例
2017/04/27 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
基于matplotlib xticks用法详解
2020/04/16 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
abstract class和interface有什么区别
2013/08/04 面试题
临床医师专业个人自我评价范文
2013/11/07 职场文书
外贸业务员工作职责
2014/01/06 职场文书
房产继承公证书
2014/04/09 职场文书
文明倡议书范文
2014/04/15 职场文书
建房合同协议书
2016/03/21 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
MySQL自定义函数及触发器
2022/08/05 MySQL