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抓取淘宝下拉框关键词的方法
Jul 08 Python
带你了解python装饰器
Jun 15 Python
详解K-means算法在Python中的实现
Dec 05 Python
python中scikit-learn机器代码实例
Aug 05 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
Python列表操作方法详解
Feb 09 Python
python线程join方法原理解析
Feb 11 Python
Pytorch中.new()的作用详解
Feb 18 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
Python基础之字符串格式化详解
Apr 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 中英文语言转换类代码
2011/08/11 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
深入理解PHP内核(一)
2015/11/10 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
2015/12/16 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python的id()函数介绍
2013/02/10 Python
python3中property使用方法详解
2019/04/23 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
党员的自我评价范文
2014/01/02 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
优秀创业计划书分享
2019/07/19 职场文书