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 展开
要求:
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 展开
2个回答
展开全部
代码使用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
展开全部
你是老师吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |