一、读取文件数据
•将数据素材文件stud.csv保存到电脑C:\py文件夹下;
•设计程序读取stud.csv文件内容,循环逐行处理每个学生的
数据,提取每个学生的学号、姓名、出生日期、性别组成
一个列表;
•如:[‘19080174031’,’黄晓瑞’,’19981225’,’女’]
---此处添加IOError异常处理模块,若打开文件错误,则提示
“文件打开错误,请核对文件是否存在”,程序结束(结束
程序的方法早前的身份证练习中有讲到)
二、添加生肖数据项
在上一步提取的出生日期信息的基础上,推算出该同学的生
肖,添加到上一步的列表中。
如:[‘19080174031’,’黄晓瑞’,’19981225’,’女’,’虎’]
推算生肖的方法,其实就是用出生日期的年份整数与某个鼠年的
年份整数相减,然后减法的差与12取余的余数就是生肖的顺序了,
0—鼠1—牛……………………11---猪
三、当前学生信息添加到主列表
当前学生信息列表生成完毕,将该列表作为一个子列表加入
主列表,形如:
[[‘19080174031’,’黄晓瑞’,’19981225’,’女’,’虎’],
………………,
[另外一个学生的信息]]
四、主列表排序及添加表头
全部学生信息添加到主列表生成完毕,按照出生日期对主列
表逆序排序;
在主列表最前面添加两个子列表,分别是表头和学生本人的
信息,例如:
[[‘学号’,’姓名’,’出生日期’,’性别’,’生肖’],
[‘2009014031’,’王大蟒’,’20021225’,’女’,’蛇’],
[‘19080174031’,’黄晓瑞’,’19981225’,’女’,’虎’],
………………,
[另外一个学生的信息]]
五、结果写入文件
将学生信息主列表生成写入CSV文件:
“c:\\py\\fname.txt”
其中的fname为学生本人的学号。
---此处添加IOError异常处理模块,若打开文件错误,则提示
“文件打开错误,请核对文件是否存在”,然后使用print函
数输出所有学生的信息,每人一行。
主要涉及文件存取和字符串、字典、列表处理等,参考如下代码:
try:
f=open('stud.csv','r',encoding='utf-8')
except IOError:
print("文件打开错误,请核对文件是否存在")
shu_dic = {0:'鼠',1:'牛',2:'虎',3:'兔',4:'龙',5:'蛇',6:'马',7:'羊',8:'猴',9:'鸡',10:'狗',11:'猪'}
d=f.read().split('\n')
sts=[]
for row in d[1:]:
id=row.split(',')[0]
name = row.split(',')[1]
bdate = row.split(',')[2][6:14]
sex = '女' if int(row.split(',')[2][16]) % 2 == 0 else '男'
shu = shu_dic[(int(bdate[:4])-1984) % 12]
stu = [id, name, bdate, sex,shu]
sts.append(stu)
f.close()
new=sorted(sts, key=lambda x: x[2], reverse=True)
new.insert(0,['学号', '姓名', '出生日期', '性别', '生肖'])
try:
f1=open('fname.txt','w',encoding='utf-8')#fname为自己的学号
except IOError:
print("文件打开错误,请核对文件是否存在")
for line in new:
st=','.join(line)
f1.writelines(st)
f1.write('\n')
print(st)
f1.close()
如你对解答满意,请点击一下采纳。
您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~
ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632