Python读取csv文件打印学生成绩输出换行问题修复咨询
问题修复方案
问题根因
文件的每一行末尾默认带有换行符\n,你没有处理就直接拆分内容,导致姓名字段的末尾携带了隐藏的换行符,打印时就会将得分自动换到下一行。
修复代码
直接在拆分每行内容前去掉尾部换行即可,同时可以优化得分求和的写法,避免手动拼接7次加法:
info = input("请输入学生信息文件路径: ") ex = input("请输入练习得分文件路径: ") names = {} with open(info, encoding='utf-8') as f: for row in f: # 去除行尾的换行符 row = row.rstrip('\n') p = row.split(';') if p[0] == "student number": continue names[p[0]] = f"{p[1]} {p[2]}" exercises = {} with open(ex, encoding='utf-8') as f: for row in f: row = row.rstrip('\n') p = row.split(';') if p[0] == "student number": continue # 批量转换为整数后求和 exercises[p[0]] = sum(map(int, p[1:])) for stu_id, name in names.items(): if stu_id in exercises: print(f"{name} {exercises[stu_id]}")
补充说明
- 加
encoding='utf-8'是为了避免不同系统下的编码报错,如果你用的是纯英文内容可以去掉 - 如果你的文件字段前后可能有多余空格,也可以把
rstrip('\n')换成strip(),同时去除首尾所有空白字符
内容的提问来源于stack exchange,提问作者user17438591
相关产品推荐
相关产品推荐

