python 编程

1个text中记录多组数据,需要按要求整理输出到excel中。要求:1、excel输出姓名、日期、成绩前三名和最后一名2、识别删除重复成绩和错误表达成绩text内容:zh... 1个text中记录多组数据,需要按要求整理输出到excel中。
要求:
1、excel输出 姓名、日期、成绩前三名和最后一名
2、识别删除重复成绩和错误表达成绩

text内容:
zhang,2010-1-1,5.1,5.2,5-3,5.4,5.6,5.26,5.6
zhan,2010-11-1,5.4,5.2,5-3,5.4,5.6,5.6,5.16
zha,2010-10-1,5.2,5.2,5-3,5.4,5.6,5-6,5.6
zh,2010-12-1,5.15,5.2,5-3,5.4,5.6,5.36,5.6
展开
 我来答
繁简知音
2018-10-27 · TA获得超过174个赞
知道小有建树答主
回答量:168
采纳率:91%
帮助的人:109万
展开全部

代码使用python3.x版本,依赖第三方库openpyxl

安装openpyxl命令如下:

pip install openpyxl

python代码如下:

import openpyxl
import re

INPUT_FILE = 'input.txt'
OUTPUT_FILE = 'result.xlsx'

with open(INPUT_FILE, 'r', encoding='utf-8') as f:
    wb = openpyxl.Workbook()
    ws = wb.active
    for line in f:
        words = re.split('[,,\n]', line)
        vals = words[2:]
        for w in vals:
            try:
                float(w)
            except ValueError as e:
                words.remove(w)
            else:
                if words.count(w) > 1:
                    for i in range(words.count(w)-1):
                        words.remove(w)
        vals = words[2:]
        vals.sort(reverse=True)
        if len(vals) > 4:
            vals = vals[:3] + vals[-1:]
        words = words[:2] + vals
        ws.append(words)
    wb.save(OUTPUT_FILE)

若代码格式有乱,请参照下图:

测试结果:

追问
还有   里面的输入错误的语句没写,比如5.6输成5-6
追答

你题目写的不是要删除错误成绩吗?

下面程序修改识别错误成绩,如识别5-6为5.6:

import openpyxl
import re

INPUT_FILE = 'input.txt'
OUTPUT_FILE = 'result.xlsx'

with open(INPUT_FILE, 'r', encoding='utf-8') as f:
    wb = openpyxl.Workbook()
    ws = wb.active
    for line in f:
        words = re.split('[,,\n]', line)
        vals = words[2:]
        for w in vals:
            try:
                float(w)
            except ValueError as e:
                if w == '':
                    words.remove(w)
                else:
                    words.remove(w)
                    w = w.replace('-', '.')
                    words.append(w)
            finally:
                if words.count(w) > 1:
                    for i in range(words.count(w)-1):
                        words.remove(w)
        vals = words[2:]
        vals.sort(reverse=True)
        if len(vals) > 4:
            vals = vals[:3] + vals[-1:]
        words = words[:2] + vals
        ws.append(words)
    wb.save(OUTPUT_FILE)

程序截图:

测试结果:

匿名用户
2018-10-27
展开全部
你是老师吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式