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模拟登录12306的方法
Dec 30 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
深入解析Python中的urllib2模块
Nov 13 Python
利用Python破解验证码实例详解
Dec 08 Python
Python3连接SQLServer、Oracle、MySql的方法
Jun 28 Python
对python条件表达式的四种实现方法小结
Jan 30 Python
django迁移数据库错误问题解决
Jul 29 Python
pygame实现俄罗斯方块游戏(AI篇2)
Oct 29 Python
通过实例学习Python Excel操作
Jan 06 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
Python configparser模块常用方法解析
May 22 Python
python 实现表情识别
Nov 21 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+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
js滑动提示效果代码分享
2016/03/10 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
Python实现两款计算器功能示例
2017/12/19 Python
python使用pycharm环境调用opencv库
2018/02/11 Python
解决python报错MemoryError的问题
2018/06/26 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
党校自我鉴定范文
2013/10/02 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
保送生自荐信范文
2015/03/26 职场文书
高中化学教学反思
2016/02/22 职场文书
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python
各种货币符号快捷输入
2022/02/17 杂记
「月刊Action」2022年5月号封面公开
2022/03/21 日漫
python在package下继续嵌套一个package
2022/04/14 Python