python使用pandas模块实现字符串处理去重排序excel生成

最近学习python,用python实现一个小需求,最后写入excel使用到pandas模块:

某中学学生在500米短跑训练比赛中的数据,体育老师把学生成绩结果记录在文件中(studentdata.txt),记录格式如下:
卡纳瓦, c0235-11,3:27,3:33,3-46,3-41,3:39,3:40,3.48,3:42,3:22
含义:学生姓名,学号,短跑成绩
体育老师把每个学生数据整理并且保存到excel中,数据格式为学生姓名、出生日期、第一成绩、第二成绩、最差成绩。
其中成绩数据有些不是标准的,需要统一,例如3-36、3.36改为3:36
思路: 文件读取、字符串处理、去重排序、excel生成

studentdata.txt

王晓辉,c0218-02, 3:51,3.42,3:31,3-25,3-51,3:35,3:21,3.18,3-39
肖凤然,c0226-07,3:51,3:30,3-45,3:39,3:30,3:52,3:34,3:24,3.47
马晓晨, c0245-23,3:54, 3:50,3-31,3:36,3:34,3:40,3:31,3-19,3:21
李再立,c0213-18,3:52,3:50,3-35,3:32,3:34,3:36,3:32,3-31,3-19
马云云, c0283-78,3:24,3:31,3-25,3:44,3:44,3:31,3:45,3:47,3.13
卡纳瓦, c0235-11,3:27,3:33,3-46,3-41,3:39,3:40,3.48,3:42,3:22

代码:ardoscore.py

# encoding:utf-8

import pandas as pd


csvList = []


def datatrain():
    # 读取文件
    with open("studentdata.txt", "r") as f:
        lines = [line.strip() for line in f.readlines()]

    for scoreinfo in lines:
        resultList = []
        studentInfo = scoreinfo.split(',')
        resultList.insert(0, studentInfo[0])  # 学生姓名
        resultList.insert(1, ' ' + studentInfo[1].lstrip())  # 出生日期
        scoreList = list(set(studentInfo[2:]))

        for i in scoreList:
            scoreList[scoreList.index(i)] = i.lstrip().replace('.', ':').replace('-', ':')

        scoreList.sort(cmp=None, key=None, reverse=False)

        resultList.insert(2, scoreList[0])  # 第一成绩
        resultList.insert(3, scoreList[1])  # 第二成绩
        resultList.insert(5, scoreList[-1])  # 最差成绩

        csvList.append(resultList)

    writeToCsv(csvList)


def writeToCsv(csvList):
    name = ['学生姓名', '学号', '第一成绩', '第二成绩', '最差成绩']
    studentcsv = pd.DataFrame(columns=name, data=csvList)
    print(studentcsv)
    studentcsv.to_csv('studentdata.csv', index=False, encoding='gbk')


if __name__ == '__main__':
    datatrain()


运行输出结果:  

  学生姓名         学号  第一成绩  第二成绩  最差成绩
0  王晓辉   c0218-02  3:18  3:21  3:51
1  肖凤然   c0226-07  3:24  3:30  3:52
2  马晓晨   c0245-23  3:19  3:21  3:54
3  李再立   c0213-18  3:19  3:31  3:52
4  马云云   c0283-78  3:13  3:24  3:47
5  卡纳瓦   c0235-11  3:22  3:27  3:48

结果数据写入excel截图:


 

猜你喜欢

转载自blog.csdn.net/ardo_pass/article/details/84061215