首页 > 编程语言 >Python将JSON以表格数据格式导出

Python将JSON以表格数据格式导出

时间:2024-01-19 12:31:50浏览次数:33  
标签:文件 Python json JSON 数据格式 csv 数据 row

  本文介绍基于Python语言,读取JSON格式的数据,提取其中的指定内容,并将提取到的数据保存到.csv格式或.xlsx格式的表格文件中的方法。

  JSON格式的数据在数据信息交换过程中经常使用,但是相对而言并不直观;因此,有时我们希望将JSON格式的数据转换为Excel表格文件数据;这里就介绍一下基于Python语言,将JSON数据转换为.csv格式与.xlsx格式数据的方法。

  首先,来看一下我们的需求。我们现在基于Postman软件,获得了某一个网站中,以JSON格式记录的大量数据,其中部分数据如下图所示(这里是大量数据样本中的1条样本)。这里关于Postman获取网站数据的方法,大家如果有需要,可以参考文章API接口测试软件Postman用法:复制HTTP请求并测试

  我们现在希望实现的是,将上述JSON数据中的文字部分(也就是有价值的信息部分)提取出来,并保存在一个Excel表格文件中;其中,不同的就是不同的信息属性,不同的就是不同的样本

  明确了需求,我们就可以开始撰写代码。这里需要注意,在本文代码中需要用到Pythonjson库,关于这一个库的配置,大家可以参考文章Mac部署Python语言json模块(Anaconda)

  首先,介绍将JSON格式数据转换为.csv文件数据的代码,具体如下。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 29 10:22:23 2023

@author: fkxxgis
"""

import json
import csv

with open('/Users/didi/Documents/response.json', 'r') as f:
    data = json.load(f)

with open('/Users/didi/Documents/Data_All.csv', 'w', newline='', encoding='utf-8') as csvfile:
    csvwriter = csv.writer(csvfile)
    
    header = ["xkzh", "qymc", "gmpZsh", "cym", "shren", "shrq"]
    csvwriter.writerow(header)
    
    for row in data['rows']:
        xkzh = row['xkzh']
        qymc = row['qymc']
        gmpZsh = row['gmpZsh']
        cym = row['cym']
        shren = row['shren']
        shrq = row['shrq']
        
        csvwriter.writerow([xkzh, qymc, gmpZsh, cym, shren, shrq])

  首先需要说明,上述代码在执行后,我打开新建的.csv格式文件,会出现中文字符乱码的情况,如下图所示。

  但是用本文接下来的导出为.xlsx格式文件的代码就不会有这个问题,所以我当时没有进一步研究乱码出现的原因,就直接用了后续的代码了。如果大家感兴趣,可以对上述代码加以进一步研究。

  上述代码的具体含义如下。首先,我们通过with open('/Users/didi/Documents/response.json', 'r') as f:,打开名为response.json的文件(也就是存储了我们JSON格式数据的文件),并将其赋值给变量f;这里的'r'表示以只读模式打开文件。随后,代码data = json.load(f)使用json.load()函数加载JSON文件中的数据,并将其存储在变量data中。

  接下来,打开名为Data_All.csv的文件,并将其赋值给变量csvfile'w'表示以写入模式打开文件。newline=''encoding='utf-8'用于设置写入.csv文件时的换行和编码方式。随后,csvwriter = csv.writer(csvfile)表示创建一个.csv写入器,将数据写入csvfile文件。

  其次,我们即可定义.csv文件的表头(列名),以列表形式存储在header变量中;随后,通过csvwriter.writerow(header)将表头写入.csv文件。

  紧接着,对于data中的每一行数据,执行以下操作——xkzh = row['xkzh']就表示从当前行的字典中提取键为xkzh的值,并将其赋值给变量xkzh;接下来的其他几行也是这个意思。最后,我们将提取的数据以列表的形式写入.csv文件的一行。

  接下来,我们介绍将JSON格式数据转换为.xlsx文件数据的代码,具体如下。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 29 10:42:26 2023

@author: fkxxgis
"""

import json
from openpyxl import Workbook

with open('/Users/didi/Documents/Veterinary/response_2.json', 'r') as f:
    data = json.load(f)

wb = Workbook()
ws = wb.active

header = ["qymc", "tym", "gg", "spm", "pzwh", "zxbz", "pzrq", "yxq", "sxyy", "bgqk"]
ws.append(header)

for row in data['rows']:
    qymc = row['qymc']
    tym = row['tym']
    gg = row['gg']
    spm = row['spm']
    pzwh = row['pzwh']
    zxbz = row['zxbz']
    pzrq = row['pzrq']
    yxq = row['yxq']
    sxyy = row['sxyy']
    bgqk = row['bgqk']
    
    ws.append([qymc, tym, gg, spm, pzwh, zxbz, pzrq, yxq, sxyy, bgqk])

wb.save('/Users/didi/Documents/Veterinary/Result_2.xlsx')

  上述代码的含义也比较简单。

  首先,我们打开名为response_2.json的文件,并将其赋值给变量f'r'表示以只读模式打开文件。随后的data = json.load(f)表示使用json.load()函数加载JSON文件中的数据,并将其存储在变量data中。

  接下来,创建一个新的Excel工作簿,将其赋值给变量wb;随后,获取工作簿的活动工作表,并将其赋值给变量ws

  紧接着,我们定义Excel文件的表头(列名),以列表形式存储在header变量中,并将表头写入Excel文件的第一行。随后,对于data中的每一行数据(假设每一行都是一个字典),执行以下操作——从当前行的字典中提取特定字段的值,并将它们分别赋值给对应的变量。接下来,我们将提取的数据以列表的形式写入Excel文件的一行。

  最后,即可将Excel工作簿保存为名为Result_2.xlsx的文件。

  运行上述代码,我们即可在Result_2.xlsx文件中看到提取到的数据,其中每一行就是一个样本,每一列表示一种属性,且没有出现乱码的情况。如下图所示。

  至此,大功告成。

标签:文件,Python,json,JSON,数据格式,csv,数据,row
From: https://blog.51cto.com/fkxxgis/9328099

相关文章

  • python 有效的数独 多种解法
    解法一:暴力枚举法最简单的方法是对于每一行、每一列和每一个3x3的九宫格,分别判断其中是否有重复的数字。具体实现如下:classSolution:defisValidSudoku(self,board:List[List[str]])->bool:#检查行foriinrange(9):nums=set()......
  • Python编程语法零基础入门
    0.开始前了解#号是一行注释"""6个"是多行注释"""#--coding:UTF-8print(u"你好!")#中文加上u转为unicode显示,不然会显示乱码1.基础语法和概念#(1)基本数据结构(整型、浮点型、字符串、布尔型)#格式:name=value没有分号、编译器自动匹配类型int_num=10float_num=......
  • Python实现光学字符识别技术-开源cnOCR
    CnOCR介绍CnOCR是一个用于中文OCR(光学字符识别)的Python3工具包。它支持简体中文、繁体中文(部分模型)、英文和数字的常见字符识别,并支持竖排文字的识别。CnOCR主要针对排版简单的印刷体文字图片,如截图图片、扫描件等。CnOCR的基本原理包括两个步骤:文本检测和文字识别。文本检测用于......
  • Flask企业级后台管理 Python 应用开发框架
    项目介绍一款Python语言基于Flask、Layui、MySQL等框架精心打造的一款模块化、高性能、企业级的敏捷开发框架,本着简化开发、提升开发效率的初衷触发,框架自研了一套个性化的组件,实现了可插拔的组件式开发方式:单图上传、多图上传、下拉选择、开关按钮、单选按钮、多选按钮、图片裁......
  • net8操作appsettings.json类
    1、添回操作类文件AppSettings.csusingMicrosoft.Extensions.Configuration.Json;namespaceYYApi.Helper{///<summary>///appsettings.json操作类///</summary>publicclassAppSettings{publicstaticIConfigurationConfigu......
  • Python Matplotlib 绘图辅助功能
    ​ 1、添加标题和轴标签使用 plt.title("标题文本") 方法来添加图表标题。使用 plt.xlabel("X轴标签") 和 plt.ylabel("Y轴标签") 方法来添加X轴和Y轴的标签。常用参数如下,函数描述plt.title(label,loc='center',pad=None, fontsize=None,color=None......
  • Json转换工具类(基于google的Gson和阿里的fastjson)
    在项目之中我们经常会涉及到字符串和各种对象的转换,为此特地整理了一下常用的转换方法一、基于com.google.code.gson封装的json转换工具类 1.在pom.xml文件里面引入gson的依赖<dependency><groupId>com.google.code.gson</groupId><arti......
  • python ssh连接mysql
    fromsshtunnelimportSSHTunnelForwarderimportpymysqlclassMySqlSSH:def__init__(self):self.server=SSHTunnelForwarder(ssh_address_or_host=('13.229.92.6',22),#sshhostssh_username='lenox......
  • CPLEX通过Python API获取Gap值的方法
    写在前面最近在使用Cplex求解模型,尽管Cplex的PythonAPI会自动输出引擎日志,但在多次求解中一次次看引擎日志找Gap值并做实验记录很麻烦,所以需要找到获取Gap值的方法。然而我在Cplex的官方文档中并没有找到这个方法,然后我就一个个去试这些方法,可算是给我试出来了。解决方法在Cpl......
  • vulkan/数据格式说明- normalized
    VK_FORMAT_A8B8G8R8_UNORM_PACK32VK_FORMAT_A8B8G8R8_SNORM_PACK32VK_FORMAT_A8B8G8R8_USCALED_PACK32VK_FORMAT_A8B8G8R8_SSCALED_PACK32VK_FORMAT_A8B8G8R8_UINT_PACK32 引用规范中的 IdentificationofFormats 和 ConversionfromNormalizedFixed-......