读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标准库,也可以手撕。
#!/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)
代码运行效果截屏图片
写入json字符串到文件,也可以这样
json.dump(scores, open(f"{mypath}scores_josn.txt", 'w')) # 同前面的with写法,这是直接写入打开的文件,前者是压成json字符串后写入打开的文件。