怎么读csv文件里的内容并保存成json文件?

读csv文件里的内容
学号 语文 数学 英语
202201 95 98 94
202202 79 86 94
对文件中每位同学的成绩求平均分
保存成json文件

可以使用Python标准库中的csv和json模块来实现读取CSV文件并保存为JSON文件的操作。

首先,假设有一个名为data.csv的CSV文件,包含如下数据:

id,name,age
1,Alice,30
2,Bob,25
3,Charlie,20

下面是一个示例代码,它将读取data.csv文件并将其保存为data.json文件:

import csv
import json

# 读取CSV文件
with open('data.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    data = list(reader)

# 写入JSON文件
with open('data.json', 'w') as jsonfile:
    json.dump(data, jsonfile)

通过csv.DictReader()方法读取CSV文件,将每行转换为字典格式的数据,存储在变量data中;通过json.dump()方法将data写入JSON文件。

执行完这段代码之后,将会在同一目录下生成一个data.json文件,它的内容如下:

[
    {"id": "1", "name": "Alice", "age": "30"},
    {"id": "2", "name": "Bob", "age": "25"},
    {"id": "3", "name": "Charlie", "age": "20"}
]

其中每行数据都被转换为一个JSON格式的字典对象。

  除了用csv标准库,也可以手撕。

  • 成绩csv文本文件

    img

  • Python代码
#!/sur/bin/nve python
# coding: utf-8
import json


mypath = '/sdcard/Documents/'

with open(f"{mypath}score2.txt") as f:
    fild = f.readline()[:-1].split() # 读取文件第一行,拆分成表头字段。
    print('\n字段:', fild)
    scores = {}
    for line in f.read().split('\n'): # 读取文件成绩数据,拆分成行。
        str_id, ch, math, en = line.split()
        ch, math, en = map(float, [ch, math, en])
        scores[str_id] = [ch, 
                          math, 
                          en,
                          round(sum([ch, math, en])/3, 1)]

with open(f"{mypath}scores_josn.txt", 'w') as f:
    f.write(json.dumps(scores)) # josn字符串写入文本文件。

print(f"\ncsv文件内容:\n{open(f'{mypath}score2.txt').read()}\n\n输出字典:\n{scores}\n\njosn文本内容:\n{open(f'{mypath}scores_josn.txt').read()}\n")
blank = ' '*4

# 成绩打印
print('~'*41)
print(' '*2, blank.join(fild + ['平均分']))
for stu_id, scores in scores.items():
    print(' ', blank.join([stu_id] + list(map(str, scores))))
print('~'*41)
  • 代码运行效果截屏图片

    img

  • 写入json字符串到文件,也可以这样


json.dump(scores, open(f"{mypath}scores_josn.txt", 'w')) # 同前面的with写法,这是直接写入打开的文件,前者是压成json字符串后写入打开的文件。

  • 写入字典数据的josn文本文件

    img


对您有帮助,请点击“采纳”