将python数据结构导出成字符串并自动缩进格式化
2015-11-14 02:40
330 查看
python可以做轻量级服务器,因此我就想要怎么给python做导表工具,如果数据格式不用json而直接用python的格式要怎么做。于是乎就写了个类似json模块一样的工具。这个工具可以将python数据结构直接导出成字符串并格式化缩进。导出的文本直接就可以当作python脚本使用,导入到其他python脚本里就可以直接使用字典等数据了。
"a":1,
1:"2",
2:{
1:1,
2:2,
},
3:[
1,
2,
4,
5,
6,
7,
],
4:lambda :print('a'),
}
# 将dict对象格式化输出成字符串 """ author:kaluluosi date:2015-11-02 dump pyton object to string and format it. """ _lines = [] indent=4 def tab(depth=0): return ' '*indent*depth def toStr(s): return "\"%s\""%s def islambda(s): return 'lambda' in s def writeline(): _lines.append('\n') def parse(obj,depth=0): if isinstance(obj,str): if islambda(obj): _lines.append(obj) else: _lines.append(toStr(obj)) else: if isinstance(obj,dict): parse_dict(obj,depth) elif isinstance(obj,list): parse_list(obj,depth) else: _lines.append(str(obj)) def parse_dict(dic,depth=0): _lines.append('{') #开头 writeline() #换行 depth+=1 #缩进增加 #循环遍历所有的item for k,v in dic.items(): _lines.append(tab(depth)) #缩进 parse(k,depth) # _lines.append(':') parse(v,depth) #值 _lines.append(',') writeline() #换行 depth-=1 #缩进还原 _lines.append(tab(depth)+'}') #结束 def parse_list(lst,depth=0): _lines.append('[') #开头 writeline() #换行 depth+=1 #缩进增加 #循环遍历所有的item for v in lst: _lines.append(tab(depth)) parse(v,depth) _lines.append(',') writeline() #换行 depth-=1 #缩进还原 _lines.append(tab(depth)+']') #结束 def dumps(obj,indent=True): parse(obj) c='' if indent: c = ''.join(_lines) else: c = ''.join([l.strip() for l in _lines]) return c def main(): dic = { 'a':1,1:'2',2:{1:1,2:2},3:[1,2,4,5,6,7],4:"lambda :print('a')"} c = dumps(dic,False) print(c) if __name__ == '__main__': main()
导出结果<pre name="code" class="python">{
"a":1,
1:"2",
2:{
1:1,
2:2,
},
3:[
1,
2,
4,
5,
6,
7,
],
4:lambda :print('a'),
}
相关文章推荐
- 旭说数据结构之队列
- 【数据结构】顺序线性表的插入、删除、合并实现
- 数据结构之堆
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构小练
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之队列一:排队买饭
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈一:进制转换
- 【数据结构】二叉树
- 【数据结构】二叉树
- binder驱动使用的数据结构说明
- 2015年大二上-数据结构-栈(4)- 数制转换
- 数据结构实验之链表六:有序链表的建立
- 数据结构实验之链表五:单链表的拆分
- 2015年大二上-数据结构-栈(3)- 括号的匹配