CSV格式和JSON间的相互转换
时间: 2023-10-18 19:04:18 浏览: 69
CSV(Comma-Separated Values)是一种常用的文件格式,它使用逗号分隔不同的字段,通常用于存储表格数据。而JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,它使用键值对的方式来表示数据。在Python中,我们可以使用内置的csv和json模块来实现CSV格式和JSON之间的相互转换。
首先,假设我们有一个CSV文件,其中包含以下内容:
```
name,age,gender
Alice,25,Female
Bob,30,Male
Charlie,35,Male
```
我们可以使用csv模块来读取这个文件,并将其转换为Python中的字典列表:
```python
import csv
import json
with open('data.csv', 'r') as f:
reader = csv.DictReader(f)
rows = list(reader)
# 将字典列表转换为JSON字符串
json_str = json.dumps(rows)
print(json_str)
```
这里的 `csv.DictReader` 函数可以读取CSV文件并返回一个字典迭代器,每个字典代表一行数据。我们可以将这些字典存储在一个列表中,然后使用 `json.dumps` 函数将其转换为JSON字符串。
反过来,假设我们有一个JSON文件,其中包含以下内容:
```json
[
{"name": "Alice", "age": 25, "gender": "Female"},
{"name": "Bob", "age": 30, "gender": "Male"},
{"name": "Charlie", "age": 35, "gender": "Male"}
]
```
我们可以使用json模块来读取这个文件,并将其转换为CSV格式:
```python
import csv
import json
with open('data.json', 'r') as f:
data = json.load(f)
# 获取所有的字段名
fields = list(data[0].keys())
# 将数据写入CSV文件
with open('data.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=fields)
writer.writeheader()
for row in data:
writer.writerow(row)
```
这里的 `json.load` 函数可以读取JSON文件并返回一个Python对象,我们可以将其转换为列表。然后,我们可以使用 `data[0].keys()` 获取所有的字段名,然后使用 `csv.DictWriter` 函数将其写入CSV文件中。
希望这能够帮助您实现CSV格式和JSON之间的相互转换。