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 相关文章推荐
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
Python unittest模块用法实例分析
May 25 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
利用python将图片版PDF转文字版PDF
May 03 Python
python操作日志的封装方法(两种方法)
May 23 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
python使用openpyxl操作excel的方法步骤
May 28 Python
python使用ctypes库调用DLL动态链接库
Oct 22 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 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接收POST数据,解析json数据
2013/06/28 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
PHP获取文件行数的方法
2015/06/10 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
web前端开发也需要日志
2010/12/09 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
python链接Oracle数据库的方法
2015/06/28 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
利用python循环创建多个文件的方法
2018/10/25 Python
python重试装饰器的简单实现方法
2019/01/31 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
python实现最小二乘法线性拟合
2019/07/19 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
python numpy存取文件的方式
2020/04/01 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
django从后台返回html代码的实例
2020/03/11 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
android面试问题与答案
2016/12/27 面试题
中专生学习生活的自我评价分享
2013/10/27 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python
bat批处理之字符串操作的实现
2022/03/16 Python