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 os模块介绍
Nov 30 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
Python简单生成随机数的方法示例
Mar 31 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
python绘制多个子图的实例
Jul 07 Python
python字符串替换re.sub()实例解析
Feb 09 Python
Python多线程正确用法实例解析
May 30 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 Python
利用Pycharm连接服务器的全过程记录
Jul 01 Python
Python学习开发之图形用户界面详解
Aug 23 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侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
python实现2048小游戏
2015/03/30 Python
python中xrange用法分析
2015/04/15 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
Python变量赋值的秘密分享
2018/04/03 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
《桃林那间小木屋》教学反思
2014/05/01 职场文书
义和团口号
2014/06/17 职场文书
兽医医药专业求职信
2014/07/27 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
合作合同协议书范本
2015/01/27 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书