注册 登录
编程论坛 Python论坛

求助,怎么读取文件,计算后再写入文件

zzk_kun 发布于 2021-03-27 13:27, 2252 次点击
这是文件
姓名    学号        英语    数学    语文    物理    平均分    总分
张三    10000001    92    89    71    79        
李四    10000002    98    92    39    61        
王五    10000003    92    98    79    85        
麻六    10000004    87    89    53    67        
唐七    10000005    94    96    75    83        
王海    10000006    98    96    48    68        
丘八    10000007    98    97    44    65        
杨九    10000008    89    94    52    68        
许十    10000009    93    92    52    68        

7 回复
#2
zyb1593572021-03-28 01:01
#方案1:
import pandas as pd
df=pd.read_table("new.txt",sep=r"\s+")
df["总分"]= df.iloc[:,2:].sum(axis=1)
df["平均分"] = df.iloc[:,2:].mean(axis=1)
df.to_csv("new2.txt", index=False, sep=" ",encoding="utf8") #写入文件.


#方案2:
import re,fileinput
f=fileinput.input("./new.txt",inplace=1) #读取文件,使用写回模式.
for i,data in enumerate(f):
    if i != 0:
        lst=re.sub("\s+", " ",data).split()[2:] #获取分数.
        lst=list(map(int, lst)) #分数str转换成int型
        sum_=sum(lst)
        avg=sum_/4
        print(data.strip(), " "*5, avg, " "*5, sum_) #加入平均分,总分后写回文件.
    else:
        print(data.strip()) #第一行原样写回.
f.close()

   
   
#3
zzk_kun2021-03-28 22:23
回复 2楼 zyb159357
没有写入文档,第二方案直接把文档里的东西清空了
#4
zyb1593572021-03-28 22:57
回复 3楼 zzk_kun
刚用你数据试了,没问题.
注: 请排除你后面是否有别的代码对文件(new.txt)进行写操作.?

[此贴子已经被作者于2021-3-28 23:08编辑过]

#5
zzk_kun2021-03-28 23:07
回复 4楼 zyb159357
方案一显示没有pandas这个模块
#6
zyb1593572021-03-28 23:10
终端(cmd)运行 pip install pandas 进行模块安装
#7
zzk_kun2021-03-29 12:28
回复 6楼 zyb159357
好的,谢谢大佬,可以用了
#8
sssooosss2021-03-31 08:51
共同学习
1