Python读取CSV文件完成评分后写入为含分数和评级两列新CSV的方法
分数评级CSV写入解决方案
以下是调整后可直接实现读取分数、评级、写入两列结果CSV的完整代码:
import csv # 同时打开源分数文件和结果写入文件 with open('arvud.csv', 'r', encoding='utf-8') as read_file, \ open('score_result.csv', 'w', encoding='utf-8', newline='') as write_file: # 初始化CSV写入工具 csv_writer = csv.writer(write_file) # 写入输出文件表头,对应要求的两列 csv_writer.writerow(['原始分数', '评级']) for line in read_file: # 清理每行首尾的换行符、空白符,跳过空行避免转换报错 raw_score = line.strip() if not raw_score: continue x = int(raw_score) # 原有评级逻辑,优化了边界判断补全漏洞 if x > 90: level = "Hinne 5" elif 80 < x <= 90: level = "Hinne 4" elif 70 < x <= 80: level = "Hinne 3" elif 60 < x <= 70: level = "Hinne 2" elif 50 < x <= 60: level = "Hinne 1" else: level = "Hinne 0" # 将当前分数和对应评级写入结果文件 csv_writer.writerow([x, level])
核心调整说明
- 用Python内置的
csv模块处理写入,自动适配CSV格式规范,无需手动拼接分隔符 - 新增空白行跳过、首尾空白符清理逻辑,避免分数转整数时报错
- 优化了原有评级逻辑的边界判断,补全了x=50、x=90等边界值的匹配规则,避免出现无匹配的异常情况
- 输出结果文件默认名为
score_result.csv,首行自带两列表头,后续每行一一对应原始分数和评级
可选调整
- 如果不需要输出表头,直接删除
csv_writer.writerow(['原始分数', '评级'])这一行即可 - 如果源CSV不是单分数列、是多列结构,将
raw_score = line.strip()调整为按逗号拆分取对应列即可,例如取第二列分数可以写为raw_score = line.strip().split(',')[1]
内容的提问来源于stack exchange,提问作者asm ars
相关产品推荐
相关产品推荐

