Python 字典转json 排序 格式化写入文件(保证美观+易于对比查找)

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。(作为替代xml文件的强大竞争者)它基于ECMAScript的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

本文主要介绍Python中json包,通过import json导入。

json: 用于字符串和python数据类型间进行转换
json模块提供了四个功能:dumps、dump、loads、load

  • dumps把数据类型转换成字符串
  • dump把数据类型转换成字符串存储在文件
  • loads把字符串转换成数据类型
  • load把文件打开从字符串转换成数据类型

方法一:dump——一句话完成 转格式+写入文件 功能

dump相当于dumps+file.write两个功能,优点是一条语句解决问题。

常用参数:

参数名解释
obj要存入json文件的python对象
fp文件句柄
ensure_ascii设置为False的话才可以把中文以中文的形式存到文件里,否则会是’\xXX\xXX’这种
indent缩进的空格数,设置为非零值时,就起到了格式化的效果,比较美观

实例:

import json
data = {579:356, 215:382, 338:400}
with open('file.json', 'w') as jsonfile:
	json.dump(data, f)
	# 文件输出
	# {"title":"githubOfFarmertian","name":"farmertian","url":"https://github.com/TLGits","description":"www"}
	json.dump(data, f, indent=4)
	# 文件输出
	# {
    #	"title":"githubOfFarmertian",
    #	"title":"farmertian",
    #	"url":"https://github.com/TLGits",
    #	"description":"www"
	# }

也就是说在使用json.dump()的时候设置一下indent参数的值就好了。可以保证输出的结果格式化。

缺点:如果每一组对应数据都为无排列顺序,无法在dump函数中设置排序,输出的顺序混乱。
—强迫症患者的做法–见下方:

方法二:dumps——先使用dumps排序,再写入文件

data数据:

data = {579:356, 215:382, 338:400}

现在希望根据key值(即579,215,338)进行data字典的排序并写入json文件。

如果仅采用方法一,输出的结果仍为:(未进行排序)

{
    "579":356,
    "215":382,
    "338":400,
}
 
 

解决方案:

使用dumps方法先进行排序和格式化:sort_keys=True,确定排序顺序,indent确定格式化,生成jsonOrderedFile为str类型的数据,然后直接打开文件并写入。

import json
data = {579:356, 215:382, 338:400}
jsonOrderedFile = json.dumps(data, sort_keys=True, indent = 4)
with open('file.json', 'w') as jsonfile:
    jsonfile.write(jsonOrderedFile)

输出结果(file.json文件中保存的数据):

{
    "215":382,
    "338":400,
    "579":356,
}
 
 

非常完美hhh!!!

如果感觉对你有所帮助,不妨点个赞,关注一波,激励博主持续更新!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值