以下答案由GPT-4.0Plus大模型与博主A努力中.......共同编写:
根据问题要求,我编写了如下Python代码来实现对score.txt文件的操作:
python
import re
# 打开源文件score.txt并读取
with open('score.txt','r') as f:
lines = f.readlines()
# 创建新文件score_new.txt并打开
with open('score_new.txt','w') as f:
# 遍历每行,提取学号、姓名和分数
for line in lines:
id, name, score = re.split('\s+', line)
# 将分数转换为整数
score = int(score)
# 将学号、姓名和分数写入新文件,并计算总分
f.write(id + ' ' + name + ' ' + str(score) + '\n')
sum_score += score
# 将总分写入新文件
f.write('sum_score: ' + str(sum_score))
该代码主要做了以下工作:
运行此代码后,会在当前目录生成新文件score_new.txt,里面包含学号、姓名、分数以及总分,实现了问题要求。
# 打开源文件和目标文件
with open('score.txt', 'r') as f_in, open('score_new.txt', 'w') as f_out:
# 遍历每一行学生记录
for line in f_in:
# 去除行末的换行符,然后按照空格分隔出学号、姓名和分数
parts = line.strip().split()
# 将学号、姓名转为字符串,并将分数转为整数
student_id, student_name, score = str(parts[0]), str(parts[1]), int(parts[2])
# 写入新文件的一行格式为:学号,姓名,分数之和
f_out.write(f"{student_id},{student_name},{score}\n")
上述代码中,open() 函数用于打开源文件 score.txt 和目标文件 score_new.txt,其中 'r' 表示读取模式,'w' 表示写入模式。通过文件对象的 readline() 方法可以逐行读取源文件中的学生记录;通过 strip() 方法去除行末的换行符,再通过 split() 方法按照空格分隔出学号、姓名和分数。将学号、姓名转为字符串,将分数转为整数之后,可以按照题目要求计算分数之和,并将结果写入目标文件 score_new.txt。在写入时,使用字符串拼接和格式化的方式将学号、姓名和分数之和连接成一行,然后通过文件对象的 write() 方法写入目标文件中。最后,由于需要遍历整个源文件,因此使用了 Python 的 with 语句来自动关闭文件对象,以免资源泄漏。
以上内容来源于ChatGPT,如果无效果请忽略,如果有效果,请采纳~
可以先读取score.txt文件的所有内容,再遍历每一行数据,取出学号,姓名,分数列,分数列计算总分,然后将每一行的这3项信息都写入score_new.txt文件中就可以了。
代码如下:
参考链接:
# https://zhuanlan.zhihu.com/p/258899307
# 从文件score.txt读取所有内容
with open('score.txt','r',encoding='utf-8') as f:
datas = f.readlines()
msg=[] # 存储每行数据的列表
stuData=[] # 存储所有学生信息结果的列表
for line in datas: # 遍历读取到的数据的每一行
# https://blog.csdn.net/qq_43759081/article/details/120910081
line=line.split("\t") # 每一行按制表符分隔成列表
# https://blog.csdn.net/qdPython/article/details/120510123
# 计算总分
scores=int(line[3]) + int(line[4]) + int(line[5].strip('\n'))
# 存储当前行的学号,姓名,总分的列表
msg = [line[0],line[1],scores]
# 将当前行的列表添加到 总结果列表中
stuData.append(msg)
# 写文件
with open("score_new.txt","w",encoding="utf-8") as f:
# 遍历总结果列表的每一行学生信息
for line in stuData:
# 遍历每一行学生信息的每一项,写入文件
for data in line:
# https://www.runoob.com/python/file-methods.html
f.write(str(data)+"\t")
# 每一行写入一个换行
f.write("\n")