广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python怎么保存json文件并格式化
  • 129
分享到

Python怎么保存json文件并格式化

2023-06-14 19:06:08 129人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了python怎么保存JSON文件并格式化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Python是什么意思Python是一种跨平台的、具有解释性、编译性、

这篇文章主要介绍了python怎么保存JSON文件并格式化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Python是什么意思

Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。

背景

最近自己搞些小东西,需要用json文件存储些文件属性什么的,但是发现用json包里的json.dump()方法存json文件的效果好丑……(其实是没仔细看方法), 于是上网找了一份格式化json文件的代码,效果挺不错,用了递归的思想,学习了一波并找到了其中一点小bug。然后,发现其实json.dump()方法其实只需要设置一个参数就达到格式化的效果了……

下面介绍一下json.dump()和我修改后的那份代码,附原GitHub地址。

json.dump()

直接把常用参数列一下好了

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

也就是说在使用json.dump()的时候设置一下indent参数的值就好了。比如json.dump(json_dict, f, indent=4),加与不加的区别如下:

{"title_pinyin":"gywxw","title":"隔云勿相望","url":"Http://www.ty2016.net/book/gywxw/","description":"大学刚毕业,她嫁给了林安森可是结婚三年,电视上常看到他出席各种场合携女相伴,她却再没再亲眼见过他。"}
{    "title_pinyin":"gywxw",    "title":"隔云勿相望",    "url":"http://www.ty2016.net/book/gywxw/",    "description":"大学刚毕业,她嫁给了林安森可是结婚三年,电视上常看到他出席各种场合携女相伴,她却再没再亲眼见过他。"}

递归实现

直接粘过来了,不难理解,效果跟上边是一样的。

# -*- encoding: utf-8 -*-class JsonFORMatter:    def __init__(self, intend=4, name="", encoding="utf-8"):        '''        intend: 缩进空格数        name: 文件名        encoding: 文件编码        '''        self.name = name        self.intend = intend        self.encoding = encoding        self.stack = []        self.obj = None        self.source = self.get_source(name, self.encoding)        self.prepare()    @staticmethod    def json_str(s):        '''        给字符串套上双引号        '''        return '"' + s + '"'    @staticmethod    def get_source(name, encoding="utf-8"):        with open(name, 'r', encoding=encoding) as f:            # 当不给split函数传递任何参数时,分隔符sep会采用任意形式的空白字符:空格、tab、换行、回车以及换页符            return ''.join(f.read().split())    def prepare(self):        try:            # python对象和json格式还是略有不同            self.source = self.source.replace("null", "None").replace("true", "True").replace("false", "False")            self.obj = eval(self.source)        except:            # json string 一定满足python dict和list的组合            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):        if intend_level == 0:            # 这个判断是为了防止文件开头出现空行            self.stack.append('{')        else:            self.stack.append(self.line_intend(intend_level)+'{')        intend_level += 1        i = 0        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)            if i != len(obj.items())-1:                # 这个处理是为了防止最后一对kv后面还有个逗号,这样会造成json.load()函数无法读取                self.stack.append(',')            i += 1        self.stack.append(self.line_intend(intend_level-1)+'}')    def parse_list(self, obj=None, intend_level=0):        if intend_level == 0:            self.stack.append('[')        else:            self.stack.append(self.line_intend(intend_level)+'[')        intend_level += 1        for i, item in zip(range(0, len(obj)), obj):            self.parse(item, intend_level)            if i != len(obj)-1:                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, 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 = self.name        res = ''.join(self.stack)        with open(res_file, 'w', encoding=self.encoding) as f:            f.write(res)if __name__ == "__main__":    jf = JsonFormatter(name="json.txt")    jf.render()

后记

以后碰见问题不能这样焦躁了,先静下心来看看api吧,说不定答案就在里面。

补充:python如何将数据保存到本地json文件

之前做了dict字典的合并,这一篇会将dict数据转换成json格式的数据保存在本地,并在需要的时候读取显示。

将数据保存成.json文件:

@app.route('/', methods=['GET', 'POST'])def detail():    one = {'name': 'xiaozhi', 'age': 188}    mess1 = ['sss is  sss', 'aaa  aa aaaa']    two = {"mess1": mess1}    data = dict(one, **two)    jsonData = json.dumps(data)    fileObject = open('data.json', 'w')    fileObject.write(jsonData)    fileObject.close()    return jsonify({"success": 200, "data": data})

在浏览器输入URL后,json文件在本地创建,打开我们可以看到数据已经成功保存:

Python怎么保存json文件并格式化

读取本地.json文件并解析显示:

Python怎么保存json文件并格式化

如图,我们做一个点击事件,点击按钮读取.json文件,并将信息显示到对应的位置上

路由代码:

@app.route('/history', methods=['GET', 'POST'])def history():    data = json.loads(request.form.get('data'))    number = data['number']    print(number)    if number == '01':        file = 'data.json'        fb = open(file, 'r')        dicts = json.load(fb)        fb.close()        myjson = json.dumps(dicts)        return myjson    return 'no history'

前台页面展示交互展示代码:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>test</title>    <script src="{{ url_for('static', filename='js/Jquery-1.7.1.min.js') }}"></script></head><body>    <input type="button" value="show log" οnclick="show()"/>    <input type="hidden" id="number" value="01"><br>    用户:<a id="user"></a><br>    年龄:<a id="age"></a><br>    信息:<a id="p0"></a><br>    <a id="p1"></a></body><script>     function show(){        var number= document.getElementById("number").value;        var data= {                data: JSON.stringify({                    'number': number                }),            }        $.ajax({            url:"{{ url_for('history') }}",            type:"post",            data:data,            dataType: 'json',            success:function(data){                $(user).text(data.name);                 $(age).text(data.age);                 for(var i=0;i<data.mess1.length;i++){                    $("#p"+i).text(data.mess1[i]);                }            },            error:function(e){                    alert("error");            }        })    }</script></html>

感谢你能够认真阅读完这篇文章,希望小编分享的“Python怎么保存json文件并格式化”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网Python频道,更多相关知识等着你来学习!

--结束END--

本文标题: Python怎么保存json文件并格式化

本文链接: https://www.lsjlt.com/news/274601.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python怎么保存json文件并格式化
    这篇文章主要介绍了Python怎么保存json文件并格式化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python是什么意思Python是一种跨平台的、具有解释性、编译性、...
    99+
    2023-06-14
  • Python 如何保存json文件并格式化
    背景 最近自己搞些小东西,需要用json文件存储些文件属性什么的,但是发现用json包里的json.dump()方法存json文件的效果好丑……(其实是没仔细看方法), 于是上网找了...
    99+
    2022-11-12
  • python怎么读取和存储dict()与.json格式文件
    本文小编为大家详细介绍“python怎么读取和存储dict()与.json格式文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么读取和存储dict()与.json格式文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-07-02
  • android怎么保存json文件
    Rate limit reached for gpt-3.5-turbo in organization org-68Lqb4iD2...
    99+
    2023-10-18
    android json
  • Python怎么将csv格式转换成JSON格式文件
    这篇文章主要介绍“Python怎么将csv格式转换成JSON格式文件”,在日常操作中,相信很多人在Python怎么将csv格式转换成JSON格式文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎...
    99+
    2023-06-02
  • 怎么在python中转换json文件格式
    本篇文章给大家分享的是有关怎么在python中转换json文件格式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python有哪些常用库python常用的库:1.requesu...
    99+
    2023-06-14
  • Python全面解析json数据并保存为csv文件
    目录解析json数据并保存为csv文件完整代码将json任意行文件转为csv文件并保存将json格式的前3000条数据存入csv解析json数据并保存为csv文件 首先导入两个包: ...
    99+
    2022-11-11
  • python如何读取和存储dict()与.json格式文件
    目录读取和存储dict()与.json格式文件读取.json格式文件并将数据保存到字典中保存字典数据到.json文件中在命令行中输出字典时的乱码问题将字符串数据转化为字典数据将dic...
    99+
    2022-11-13
  • vscode中vue文件保存时如何自动格式化
    这篇文章将为大家详细讲解有关vscode中vue文件保存时如何自动格式化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.安装插件vscode安装以下插件:eslintVeturPrettier - Co...
    99+
    2023-06-22
  • php格式化代码保存到文件的方法是什么
    要将PHP代码格式化并保存到文件,可以使用以下步骤:1. 将PHP代码保存到一个字符串变量中。2. 使用PHP的内置函数`file_...
    99+
    2023-10-11
    php
  • Python 读取数据并保存为txt文件的方式
     首先是读取文件,这里使用了pandas库 import pandas as pddata_train = pd.read_csv("train_dataset.csv", encoding='utf-8',sep='|')train_co...
    99+
    2023-09-27
    python 开发语言
  • python怎么保存list到文件
    要将列表保存到文件中,可以使用以下方法: 使用`pickle`模块将列表保存为二进制文件: import pickle my_...
    99+
    2023-10-24
    python
  • Python读取hdf文件并转化为tiff格式输出
    目录1.Python3读取hdf文件2.使用Python2读取hdf文件3. 如何使Python2和3兼容3.1 修改Python2.7的名字3.2 pip更新3.2 使用pip2下...
    99+
    2022-11-11
  • python用pdfplumber提取pdf表格数据并保存到excel文件中
    目录pdfplumber操作pdf文件一、pdfplumber安装及导入二、pdfplumber基础使用1、基础知识2、获取pdf基础信息3、pdfplumber提取表格数据三、提取...
    99+
    2022-11-11
  • Linux文件格式dos怎么转化
    这篇文章主要介绍Linux文件格式dos怎么转化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!dos格式文件传输到Linux系统时,会在每行的结尾多一个^M,当然也 有可能看不到,但是在vi的时候,会在下面显示此文件...
    99+
    2023-06-28
  • linux怎么修改文件内容并保存
    要在Linux中修改文件内容并保存,可以使用以下几种方法:1. 使用文本编辑器:可以使用命令行文本编辑器(如vim、nano等)或图...
    99+
    2023-09-14
    linux
  • json格式的文件怎么利用java进行导出
    json格式的文件怎么利用java进行导出?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。生成json文件代码:import java.io.File;impor...
    99+
    2023-05-31
    java json ava
  • python怎么取固定格式文件
    python怎么取固定格式文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。环境:这几天在使用python开发程序的过程中,需要连接到mysq...
    99+
    2022-10-18
  • 视频存储云服务器保存的文件格式是什么
    视频存储云服务器通常支持存储多种格式的文件,包括常见的3GP、AVI、ASF、FLV、MOV、MP4、MPEG、WMV等格式。视频存...
    99+
    2023-03-07
    视频存储云服务器 云服务器
  • python怎么将数组保存至文件
    可以使用Python的pickle模块将数组保存到文件中。 假设我们有一个名为my_array的数组,我们可以使用以下代码将其保存到...
    99+
    2023-10-24
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作