将 CSV 转换为 XML 或 JSON 是一种常见的数据格式转换任务。由于 CSV 文件是以逗号分隔的文本文件,它通常用于存储表格数据,而 XML 和 JSON 是更具结构性的文件格式,经常用于数据交换和存储。
CSV 转 XML
XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,具有层次结构。将 CSV 转换为 XML 需要根据 CSV 文件的列名称生成 XML 元素,并且每一行数据成为 XML 中的一个节点。
示例:CSV 转 XML
假设我们有一个简单的 CSV 文件 data.csv,内容如下:
csv
id,name,age
1,John,28
2,Alice,24
3,Bob,35
我们希望将其转换为以下的 XML 格式:
xml
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<id>1</id>
<name>John</name>
<age>28</age>
</row>
<row>
<id>2</id>
<name>Alice</name>
<age>24</age>
</row>
<row>
<id>3</id>
<name>Bob</name>
<age>35</age>
</row>
</rows>
Python 示例:CSV 转 XML
python
import csv
import xml.etree.ElementTree as ET
# 读取CSV文件
with open('data.csv', mode='r') as file:
reader = csv.DictReader(file)
# 创建根元素
root = ET.Element("rows")
for row in reader:
row_element = ET.SubElement(root, "row")
for field, value in row.items():
field_element = ET.SubElement(row_element, field)
field_element.text = value
# 创建并写入XML文件
tree = ET.ElementTree(root)
tree.write("data.xml", encoding="utf-8", xml_declaration=True)
CSV 转 JSON
JSON(JavaScript 对象表示法)是一种轻量级的数据交换格式,易于人读写并且易于机器解析和生成。CSV 转 JSON 可以直接将 CSV 数据转换为一个包含对象的数组,其中每个对象代表一行数据。
示例:CSV 转 JSON
假设我们有相同的 CSV 文件 data.csv,我们希望将其转换为以下的 JSON 格式:
json
[
{
"id": "1",
"name": "John",
"age": "28"
},
{
"id": "2",
"name": "Alice",
"age": "24"
},
{
"id": "3",
"name": "Bob",
"age": "35"
}
]
Python 示例:CSV 转 JSON
python
import csv
import json
# 读取CSV文件
with open('data.csv', mode='r') as file:
reader = csv.DictReader(file)
rows = [row for row in reader]
# 写入JSON文件
with open('data.json', mode='w') as json_file:
json.dump(rows, json_file, indent=4)
总结
CSV 转 XML:我们需要为每一行创建一个 <row> 元素,并且为每一列创建相应的子元素。
CSV 转 JSON:我们可以将每一行数据转换为一个对象,所有的行数据组成一个数组。