示例:

代码如下:d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } }

美观输出是:

观察一下特点:

1.同一level的key左对齐,即indent相同。d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } }

2.在,号后换行。

3.如果value是字典,即嵌套字典,则嵌套字典在下一个level,每一个level的key的indent都不一样。

思路分析:

这是个"拼接字符串"问题,元素有""{}:,\n和空格indent。

遍历一个个(k, v)键值对,拼接yield起来,遇到嵌套字典就递归,即递归+yield。

上代码。#coding=utf-8

def pretty_dict(obj, indent=' '):

def _pretty(obj, indent):

for i, tup in enumerate(obj.items()):

k, v = tup

#如果是字符串则拼上""

if isinstance(k, basestring): k = '"%s"'% k

if isinstance(v, basestring): v = '"%s"'% v

#如果是字典则递归

if isinstance(v, dict):

v = ''.join(_pretty(v, indent + ' '* len(str(k) + ': {')))#计算下一层的indent

#case,根据(k,v)对在哪个位置确定拼接什么

if i == 0:#开头,拼左花括号

if len(obj) == 1:

yield '{%s: %s}'% (k, v)

else:

yield '{%s: %s,\n'% (k, v)

elif i == len(obj) - 1:#结尾,拼右花括号

yield '%s%s: %s}'% (indent, k, v)

else:#中间

yield '%s%s: %s,\n'% (indent, k, v)

print ''.join(_pretty(obj, indent))

d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } }

pretty_dict(d)

更多Python构造自定义方法来美化字典结构输出相关文章请关注PHP中文网!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

python字符串的美化_Python构造自定义方法来美化字典结构输出相关推荐

  1. python字符串代码对象_Python源码剖析 - Python中的字符串对象

    1. 前言 我们已经在 [Python中的整数对象] 章节中对定长对象进行了详细的讲解,接下来我们将介绍变长对象,而字符串类型,则是这类对象的典型代表. 这里必须先引入一个概念: Python 中的变 ...

  2. python字符串拼接数字_python字符串和数值操作函数大全(非常全)

    字符串和数值型数字的操作大全 1.反斜杠\的使用规则:一般使用表示续行的操作,可以其他符号相结合组成其他的一些使用符号,转义字符\'的使用会识别引号,使得字符串中的引号和外面本来的啊引号相区分. (1 ...

  3. python字符串打印教学_python字符串格式化教你正确打印 : D

    python字符串格式化教你正确打印 : D python字符串格式化教你正确打印 : D 文章目录 用格式字符% 字符串 整数 浮点数 format格式化 print需要注意的地方 转义字符 %运算 ...

  4. python字符串逆序_python之字符串逆序

    python之字符串逆序 1.贴题 题目来自PythonTip 给你一个字符串 a, 请你输出逆序之后的a. 例如:a='xydz' 则输出:zdyx 2.说明 思路基本分为两种, 一是编写循环,每次 ...

  5. python字符串截取拼接_Python字符串拼接、截取及替换方法总结分析

    本文实例讲述了Python字符串拼接.截取及替换方法.分享给大家供大家参考,具体如下: python字符串连接 python字符串连接有几种方法,我开始用的第一个方法效率是最低的,后来看了书以后就用了 ...

  6. python字符串成熟编码_python字符串转公式两种方法获取网页编码python版

    在web开发的时候我们经常会遇到网页抓取和分析,各种语言都可以完成这个功能.我喜欢用python实现,因为python提供了很多成熟的模块,可以很方便的实现网页抓取. 但是在抓取过程中会遇到编码的问题 ...

  7. python字符串title函数_python字符串内建函数-capitalize、title、upper

    python字符串内建函数-capitalize.title.upper 6.capitalize 函数功能:该函数用于将字符串的第一个字母变成大写,其他字母变成小写. 返回值:该函数的返回值是一个首 ...

  8. python字符串的特点_python小白之路(特性语法三之字符串)

    字符串:双引号或单引号中的数据 输出:print() 输入:input() 切片:[起始下标:结束下标:步长] PS:选取区间属于左闭右开型.[1:5:1] [5:1:-1] 常见操作: find: ...

  9. python字符串函数运算_Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】 原创...

    前面简单介绍了python基本运算,这里再来简单讲述一下Python字符串相关操作 1. 字符串表示方法 >>> "www.jb51.net" #字符串使用单引号 ...

最新文章

  1. 第02章_MySQL环境搭建
  2. 所有配置_一张图看懂iPhone12的所有配置!
  3. Docker生成镜像的两种方式
  4. 未封装的扩展程序是什么意思_Android漏洞挖掘第三期:客户端完整性未校验
  5. 【报告分享】2019网红电商生态发展白皮书.pdf
  6. 基本的 HTML 标签
  7. linux新终端找回任务,如何向您的Linux终端添加强大的多任务
  8. C#网络编程----使用UdpClient实现网络会议讨论(详解)
  9. shell脚本学习教程(全网最全教学)
  10. 百度地图java批量获得经纬度_批量调用百度地图API获取地址经纬度坐标
  11. 电力拖动自动控制系统_专插本专业全面分析:电子工程及其自动化
  12. 软件开发的一些注意事项
  13. AI大事件 | Geoffrey Hinton决定抛弃反向传播,预期策略梯度算法
  14. Servlet 04
  15. 怎样配置java的环境变量_java配置环境变量步骤
  16. 《CCNP安全Secure 642-637认证考试指南》——2.3节入侵者动机
  17. 机器学习做自动聊天机器人_我和一个治疗机器人聊天,缓解了我对Covid的恐惧。 这很奇怪。
  18. mkv封装格式+ebml语法
  19. ARCGIS对不同值域的格栅影像用同一图例出图
  20. pcap_next_ex() 捕获数据包

热门文章

  1. Linux服务器编程之:utime()函数
  2. define关键字的使用,以及宏函数的定义
  3. 处理字符串_7_判断字符串是字符串数字型
  4. java jtable刷新_使用Swing timer实现Jtable数据定时更新
  5. C++之链表中头指针、头节点、首元结点的
  6. RDIFramework.NET V3.3 Web版角色授权管理新增角色对操作权限项、模块起止生效日期的设置...
  7. 运维常说的 5个9、4个9、3个9 的可靠性,到底是什么???
  8. Java第十次作业--多线程
  9. 《税的真相》—— 读后总结
  10. 修改Oracle数据库字符集