用Python来回答

对源文件score.txt进行操作,将学号,姓名和分数求和写入新文件score_new.txt

img

以下答案由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)) 

该代码主要做了以下工作:

  1. 打开源文件score.txt并读取所有行。
  2. 打开新文件score_new.txt进行写操作。
  3. 遍历score.txt的每一行,使用正则表达式提取学号、姓名和分数。
  4. 将分数转换为整数,并将学号、姓名和分数写入新文件score_new.txt。
  5. 同时计算所有分数的总和sum_score。
  6. 将sum_score也写入新文件score_new.txt。
  7. 关闭所有文件。

运行此代码后,会在当前目录生成新文件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,如果无效果请忽略,如果有效果,请采纳~

img

可以先读取score.txt文件的所有内容,再遍历每一行数据,取出学号,姓名,分数列,分数列计算总分,然后将每一行的这3项信息都写入score_new.txt文件中就可以了。

代码如下:

参考链接:


python利用split()分离字符串【空格、制表符、换行符】_x.split_羊驼今天打代码了吗的博客-CSDN博客 MOOC实用python程序设计笔记01课程链接若X是字符串,x.split()的值是一个列表,包含字符串x经过空格、制表符、换行符分隔得到的所有字串。python中input的值是字符串型,这里输入5,8,预期输出13使用制表符 \t 和 换行符 \n 测试输出... https://blog.csdn.net/qq_43759081/article/details/120910081

【Python教程】删除字符串中字符的四种方法_python删掉字符串中的元素_Python热爱者的博客-CSDN博客 一、删除字符串两端的一种或多种字符#strip()、lstrip()、rstrip()方法;(默认删除空格符)A、list.strip(字符):删除字符串两端的一种或多种字符;例:删除字符串s两端 a 或 b 或 c 字符;s = 'abbmmmcccbbb's1 = s.strip('abc')print(s1)#输出:mmmB、list.lstrip(字符):删除字符串左端的一种或多种字符;C、list.rstrip(字符):删除字符串右端的一种或多种字符;二、删除字符串中单个固 https://blog.csdn.net/qdPython/article/details/120510123

Python File(文件) 方法 | 菜鸟教程 Python File(文件) 方法 open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。 注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。 open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。 open(file, mode='r https://www.runoob.com/python/file-methods.html


# 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")

   

img