Python--常见的数据格式转换

embedded/2024/9/19 21:17:43/ 标签: python

下面是几个常见的数据格式转换的示例,涵盖了一些常用的格式,如 CSV、XML、YAML 等。每个示例都会介绍如何从一种格式转换到另一种格式。

1. CSV 转 JSON

CSV 文件通常以逗号分隔,行代表记录,列代表字段。我们可以使用 csvjson 模块来实现转换。

示例代码
import csv
import json# 定义输入和输出文件路径
csv_file = 'data.csv'
json_file = 'output.json'def csv_to_json(csv_file, json_file):data = []# 读取 CSV 文件并转换为字典列表with open(csv_file, mode='r', encoding='utf-8') as infile:reader = csv.DictReader(infile)for row in reader:data.append(row)# 将字典列表写入 JSON 文件with open(json_file, 'w', encoding='utf-8') as outfile:json.dump(data, outfile, indent=4, ensure_ascii=False)print(f"CSV to JSON conversion complete! Output saved to {json_file}")# 调用函数
csv_to_json(csv_file, json_file)
示例输入(CSV 文件 data.csv
name,age,city
John,30,New York
Jane,25,Los Angeles
输出(JSON 文件 output.json
[{"name": "John","age": "30","city": "New York"},{"name": "Jane","age": "25","city": "Los Angeles"}
]

2. JSON 转 CSV

从 JSON 文件转换为 CSV 文件,可以使用 Python 的 csv 模块写出 CSV 格式。

示例代码
import json
import csv# 定义输入和输出文件路径
json_file = 'data.json'
csv_file = 'output.csv'def json_to_csv(json_file, csv_file):with open(json_file, 'r', encoding='utf-8') as infile:data = json.load(infile)# 提取字段名(假设所有 JSON 对象都有相同的字段)fieldnames = data[0].keys()# 将数据写入 CSV 文件with open(csv_file, 'w', newline='', encoding='utf-8') as outfile:writer = csv.DictWriter(outfile, fieldnames=fieldnames)writer.writeheader()writer.writerows(data)print(f"JSON to CSV conversion complete! Output saved to {csv_file}")# 调用函数
json_to_csv(json_file, csv_file)
示例输入(JSON 文件 data.json
[{"name": "John", "age": 30, "city": "New York"},{"name": "Jane", "age": 25, "city": "Los Angeles"}
]
输出(CSV 文件 output.csv
name,age,city
John,30,New York
Jane,25,Los Angeles

3. XML 转 JSON

XML 是一种常用于数据交换的格式,Python 中可以使用 xmltodict 模块来处理 XML 数据并转换为 JSON。

示例代码
import xmltodict
import json# 定义输入和输出文件路径
xml_file = 'data.xml'
json_file = 'output.json'def xml_to_json(xml_file, json_file):# 读取 XML 文件with open(xml_file, 'r', encoding='utf-8') as infile:xml_content = infile.read()data_dict = xmltodict.parse(xml_content)  # 将 XML 转换为字典# 将字典写入 JSON 文件with open(json_file, 'w', encoding='utf-8') as outfile:json.dump(data_dict, outfile, indent=4, ensure_ascii=False)print(f"XML to JSON conversion complete! Output saved to {json_file}")# 调用函数
xml_to_json(xml_file, json_file)
示例输入(XML 文件 data.xml
<people><person><name>John</name><age>30</age><city>New York</city></person><person><name>Jane</name><age>25</age><city>Los Angeles</city></person>
</people>
输出(JSON 文件 output.json
{"people": {"person": [{"name": "John","age": "30","city": "New York"},{"name": "Jane","age": "25","city": "Los Angeles"}]}
}

4. YAML 转 JSON

YAML 是一种简洁的配置文件格式。可以使用 PyYAML 库将 YAML 文件转换为 JSON 文件。

示例代码
import yaml
import json# 定义输入和输出文件路径
yaml_file = 'data.yaml'
json_file = 'output.json'def yaml_to_json(yaml_file, json_file):# 读取 YAML 文件with open(yaml_file, 'r', encoding='utf-8') as infile:data = yaml.safe_load(infile)  # 将 YAML 加载为 Python 字典# 将字典写入 JSON 文件with open(json_file, 'w', encoding='utf-8') as outfile:json.dump(data, outfile, indent=4, ensure_ascii=False)print(f"YAML to JSON conversion complete! Output saved to {json_file}")# 调用函数
yaml_to_json(yaml_file, json_file)
示例输入(YAML 文件 data.yaml
people:- name: Johnage: 30city: New York- name: Janeage: 25city: Los Angeles
输出(JSON 文件 output.json
{"people": [{"name": "John","age": 30,"city": "New York"},{"name": "Jane","age": 25,"city": "Los Angeles"}]
}

5. JSON 转 YAML

可以使用 PyYAML 库将 JSON 文件转换为 YAML 文件。

示例代码
import json
import yaml# 定义输入和输出文件路径
json_file = 'data.json'
yaml_file = 'output.yaml'def json_to_yaml(json_file, yaml_file):# 读取 JSON 文件with open(json_file, 'r', encoding='utf-8') as infile:data = json.load(infile)# 将数据写入 YAML 文件with open(yaml_file, 'w', encoding='utf-8') as outfile:yaml.dump(data, outfile, allow_unicode=True)print(f"JSON to YAML conversion complete! Output saved to {yaml_file}")# 调用函数
json_to_yaml(json_file, yaml_file)
示例输入(JSON 文件 data.json
{"people": [{"name": "John","age": 30,"city": "New York"},{"name": "Jane","age": 25,"city": "Los Angeles"}]
}
输出(YAML 文件 output.yaml
people:
- age: 30city: New Yorkname: John
- age: 25city: Los Angelesname: Jane

总结

这些示例展示了如何在不同常见数据格式之间进行转换,包括 CSV、JSON、XML 和 YAML。这些操作在数据处理、配置文件转换、数据导入导出等任务中非常常用。


http://www.ppmy.cn/embedded/113342.html

相关文章

【图像匹配】基于SURF算法的图像匹配,matlab实现

博主简介&#xff1a;matlab图像代码项目合作&#xff08;扣扣&#xff1a;3249726188&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于基于SURF算法的图像匹配&#xff0c;用matlab实现。 一、案例背景和算法介绍 前…

SHT30温湿度传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理 三、程序设计 main.c文件 sht30.h文件 sht30.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 SHT30是一种常见的温湿度传感器&#xff0c;是一款完全校准的线性化的温湿度数字传感器&#xff0…

echarts 自定义标注样式自定义tooltip弹窗样式

文章目录 1. 实现根据经纬度自定义标注图片样式2. 实现鼠标悬浮标注自定义弹窗样式内容 1. 实现根据经纬度自定义标注图片样式 设置 symbol 属性为 image://${require("/assets/img/dataView/point.png")} 图片地址即可&#xff0c;注意前面跟 image:// 特有的写法b…

2024最新版MySQL详细学习教程

MySQL数据库提供了很多函数包括&#xff1a; 数学函数&#xff1b;字符串函数&#xff1b;日期和时间函数&#xff1b;条件判断函数&#xff1b;系统信息函数&#xff1b;加密函数&#xff1b;格式化函数&#xff1b; 一、数学函数 数学函数主要用于处理数字&#xff0c;包括…

【iOS】push和pop、present和dismiss

目录 前言push和poppushpop present和dismisspresentdismiss实现模态对话框代码示例 区别总结 前言 push 和 present 是两种用于导航和切换视图控制器&#xff08;ViewController&#xff09;的常用方法&#xff0c;push与present都可以推出新的界面&#xff0c;present与dismi…

使用MongoDB存储和查询数据的Python函数实现

使用MongoDB存储和查询数据的Python函数实现 MongoDB是一种流行的NoSQL数据库,因其灵活的文档存储和高性能查询能力而广受欢迎。在本文中,我们将详细介绍如何使用Python实现一个函数来存储和查询MongoDB中的数据。本文将涵盖MongoDB的基本概念、Python与MongoDB的连接、数据…

Android系统dumpsys命令详解

文章目录 1. dumpsys 的工作原理2. 基本使用方法执行 dumpsys限制 dumpsys 的输出 3. 常见的 dumpsys 服务1. Activity Manager (activity)2. Battery Service (battery)3. Window Manager (window)4. Package Manager (package)5. Power Manager (power)6. Media DRM (media.d…

tomcat服务器

tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器。Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样&#xff0c;具有处理 HTML 页面的功能&#xff0c;然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx&#x…

Collection

java.util.Collections:是集合工具类 作用&#xff1a;Collections不是集合&#xff0c;而是集合的工具类 常用API addAll package Collections;import java.util.ArrayList; import java.util.Collections;public class CollectionsDemo {public static void main(String[]…

Android Kotlin 中的 `groupBy` 方法详解

在 Kotlin 中&#xff0c;groupBy 是一个非常有用的集合操作函数。我们可以使用它按照某个标准&#xff0c;将集合中的元素分组&#xff0c;形成一个 Map&#xff0c;其中 key 是我们分组的标准&#xff0c;value 是符合这个标准的元素列表。本文将通过几个实际例子&#xff0c…

使用 Node Media Server 和 FFmpeg 创建直播流,推送本地视频

Node.js安装&#xff1a; 参考这个 Nodejs安装教程 安装完成之后&#xff0c;记得修改一下npm源&#xff1a; npm config set registry https://registry.npmmirror.com下一步&#xff0c;安装node-media-server npm install node-media-server参考这个&#xff1a;安装ffmpe…

vue-cli创建一个可以执行的vue2工程

vue-cli创建一个可以执行的vue2工程 要使用 Vue CLI 创建一个可执行的 Vue 2 工程&#xff0c;请按照以下步骤操作&#xff1a;首先&#xff0c;确保你已经安装了 Node.js 和 npm&#xff08;Node.js 包管理器&#xff09;。安装 Vue CLI。在命令行中运行&#xff1a;创建一个…

Android DPC模式多开 APP

1、修改创建多个profile时超出限制 packages/apps/ManagedProvisioning/src/com/android/managedprovisioning/preprovisioning/PreProvisioningController.java // PO preconditions if (isProfileOwnerProvisioning()) {// If there is already a managed profile, first c…

马匹行为识别系统源码分享

马匹行为识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

身份证阅读器API模式 VUE Dorado7

VUE 新框架 // 身份证扫描 readIdCard(type) {// 1.连接axios.get(http://localhost:19196/openDevice).then(res > {if (res.data.resultFlag 0) {// 2.读卡axios.get(http://localhost:19196/readCard).then((res) > {if (res.data.resultFlag 0) {// this.$message…

大模型入门3:理解LLAMA

LLama在transformers库中的代码&#xff0c;以及各部分原理Llama3.1技术报告LLama 33b 微调尝试 Model a stack of DecoderBlocks(SelfAttention, FeedForward, and RMSNorm) decoder block 整体结构&#xff1a;最大的区别在pre-norm x -> norm(x) -> attention() -…

图解Redis 02 | String数据类型的原理及应用场景

介绍 在 Redis 中&#xff0c;String 是一种重要的数据类型&#xff0c;是最基本的 key-value 结构&#xff0c;在这个结构中&#xff0c; value 是一个字符串。value 所能容纳的数据最大长度为512M。 需要注意的是&#xff0c;这里的字符串不只指文本数据&#xff0c;它还可…

【Kubernetes】常见面试题汇总(十六)

目录 48.简述 Kubernetes PodsecurityPolicy 机制能实现哪些安全策略&#xff1f; 49.简述 Kubernetes 网络模型&#xff1f; 50.简述 Kubernetes CNl 模型&#xff1f; 48.简述 Kubernetes PodsecurityPolicy 机制能实现哪些安全策略&#xff1f; 在 PodSecurityPolicy 对象…

LSTM文本预测(Pytorch版)

任务&#xff1a;基于 flare 文本数据&#xff0c;建立 LSTM 模型&#xff0c;预测序列文字 1.完成数据预处理&#xff0c;将文字序列数据转化为可用于LSTM输入的数据 2.查看文字数据预处理后的数据结构&#xff0c;并进行数据分离操作 3.针对字符串输入&#xff08;" fla…

【基于C++的产品入库管理系统】

基于C的产品入库管理系统可以用来跟踪产品的入库、出库和库存情况。这种系统通常包括产品信息的录入、查询、更新以及库存管理等功能。下面是一个简化的产品入库管理系统的设计方案及其代码示例。 系统设计概览 产品管理&#xff1a;包括产品的基本信息&#xff08;如名称、规…