m0_71770555 2022-06-07 11:37 采纳率: 66.7%
浏览 219
已结题

Python操作txt文件

已知“score”文件夹下score.txt中保存有十个评委对三个候选人的打分情况从左到右各个字段的含义分别为:评委号、1号候选人得分、2号得分、3号候选 人得分,各字段之间用逗号分隔。
例如
Judge1,75,85,81
Judge2,84,87,76

要求设计 Python程序:①读取该txt 文件,将每个候选人的得分去掉一个最高分和- 个最低分:②计算剩余得分的平均数作为该候选 人最终成绩:③找出;最终成绩最高的候选 人的编号及最终成绩,分别输出到 socre 文件爽 下score.xlsx 文件的score 工作簿中 A1 和 BI 单元格

  • 写回答

5条回答 默认 最新

  • xdspower 2022-06-07 13:43
    关注

    这个txt文件实质为一个以逗号分隔的CSV格式文件,所以可以用pandas来处理数据,根据题意,评委ID在数据处理中没有实际意义,所以提取中就可以忽略

    import  pandas as  pd 
    import xlwt
    
    def takeSecond(elem):# 排序时取第2个元素来比较处理
        return elem[1]
    
    datas=pd.read_csv('data.txt', usecols=[1,2,3] ,header=None) # 从文件中读取数据
    rt=[]
    for i in range(3): # 计算每个候选人的对应成绩
        dataList=datas[datas.columns[i]]
        rt.append(["{}号候选人".format(i+1), (dataList.sum()-dataList.max()-dataList.min())/8])
    
    rt.sort(key=takeSecond,reverse=True) #排序元素,从高到低 
    wb = xlwt.Workbook() # 后面都是excel文件写入处理
    sheet1 = wb.add_sheet('score')
    sheet1.write(0,0,rt[0][0])
    sheet1.write(0,1,rt[0][1])
    wb.save('score.xls')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 6月16日
  • 已采纳回答 6月8日
  • 创建了问题 6月7日