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如何查看系统网络流量的信息
Sep 12 Python
利用python获取Ping结果示例代码
Jul 06 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
Python实现的破解字符串找茬游戏算法示例
Sep 25 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
Python装饰器用法示例小结
Feb 11 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
基于Python实现天天酷跑功能
Jan 06 Python
详解用selenium来下载小姐姐图片并保存
Jan 26 Python
Python3使用Selenium获取session和token方法详解
Feb 16 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 数据结构 算法 三元组 Triplet
2011/07/02 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php制作动态随机验证码
2015/02/12 PHP
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
Python中列表元素转为数字的方法分析
2016/06/14 Python
用Python实现随机森林算法的示例
2017/08/24 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
Django中Middleware中的函数详解
2019/07/18 Python
Python API自动化框架总结
2019/11/12 Python
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
2016/10/17 面试题
机械专业毕业生自荐信
2013/11/02 职场文书
电信专业毕业生推荐信
2013/11/18 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
现金出纳岗位职责
2014/03/15 职场文书
辩护词格式
2015/05/22 职场文书
旅行社计调工作总结
2015/08/12 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers
Spring中bean集合注入的方法详解
2022/07/07 Java/Android