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 06 Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 Python
Python中常见的数据类型小结
Aug 29 Python
Python线性方程组求解运算示例
Jan 17 Python
Python控制Firefox方法总结
Jun 03 Python
linux环境中没有网络怎么下载python
Jul 07 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
python函数声明和调用定义及原理详解
Dec 02 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
python实现画图工具
Aug 27 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
Feb 06 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
Syphon 使用方法
2021/03/03 冲泡冲煮
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
PHP可变变量学习小结
2015/11/29 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
Python中多线程及程序锁浅析
2015/01/21 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
普通大学毕业生自荐信
2013/11/04 职场文书
小学生班会演讲稿
2014/01/09 职场文书
领导检查欢迎词
2014/01/14 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
2014年财务部工作总结
2014/11/11 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript