python编程数据处理_从零学python系列之数据处理编程实例(二)

import os

print(os.getcwd())

os.chdir('c:\python33\headfirstpython\hfpy_code\chapter6')  #将工作空间修改为文件所在的目录

#定义函数get_filedata从文件中取值

def get_filedata(filename):

try:

with open(filename)  as f:        #with语句打开和自动关闭文件

data=f.readline()                 #从文件中逐行读取字符

data_list=data.strip().split(',')   #将字符间的空格清除后,用逗号分隔字符

return({

"name" : data_list.pop(0),

"date_of_birth" : data_list.pop(0),

"times" : str(sorted(set([modify_time_format(s) for s in data_list]))[0:3])

})                                #使用字典将关联的姓名,出生年月,时间键和值进行存储并返回

except ioerror as ioerr:

print ('file error' + str(ioerr))     #异常处理,打印错误

return (none)

#定义函数modify_time_format将所有文件中的时分表达方式统一为“分.秒”

def modify_time_format(time_string):

if "-" in time_string:

splitter="-"

elif ":" in time_string:

splitter=":"

else:

splitter="."

(mins, secs)=time_string.split(splitter) #用分隔符splitter分隔字符后分别存入mins和secs

return (mins+ '.' +secs)

#定义函数get_prev_three返回文件中排名前三的不重复的时间成绩

def get_prev_three(filename):

new_list=[modify_time_format(each_t) for each_t in get_filedata(filename)]   #采用列表推导将统一时分表达方式后的记录生成新的列表

delete_repetition=set(new_list)                                                                     #采用集合set函数删除新列表中重复项,并生成新的集合

in_order=sorted(delete_repetition)                                                               #采用复制排序sorted函数对无重复性的新集合进行排序

return (in_order[0:3])

#输出james的排名前三的不重复成绩和出生年月

james = get_filedata('james2.txt')

print (james["name"]+"'s fastest times are: " + james["times"])

print (james["name"] + "'s birthday is: "  + james["date_of_birth"])

#输出julie的排名前三的不重复成绩和出生年月

julie = get_filedata('julie2.txt')

print (julie["name"]+"'s fastest times are: " + julie["times"])

print (julie["name"] + "'s birthday is: "  + julie["date_of_birth"])

#输出mikey的排名前三的不重复成绩和出生年月

mikey = get_filedata('mikey2.txt')

print (mikey["name"]+"'s fastest times are: " + mikey["times"])

print (mikey["name"] + "'s birthday is: "  + mikey["date_of_birth"])

#输出sarah的排名前三的不重复成绩和出生年月

sarah = get_filedata('sarah2.txt')

print (sarah["name"]+"'s fastest times are: " + sarah["times"])

print (sarah["name"] + "'s birthday is: "  + sarah["date_of_birth"])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值