Python 之文件内容解析(2)
有如下一些文本文件,里面存储了运动员的名字、出生时间,以及该运动员各次跑步所花的时间,其中时间表示有各种不同的形式,现需要解析这些文件,显示出每个运动员的名字、出生日期以及最快的三次时间。
james2.txt: James Lee,2002-3-14,2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22,2-01,2.01,2:16
julie2.txt: Julie Jones,2002-8-17,2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21,3.01,3.02,2:59
mikey2.txt: Mikey McManus,2002-2-24,2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38,2:40,2.22,2-31
sarah2.txt: Sarah Sweeney,2002-6-17,2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55,2:22,2-21,2.22
# 将时间统一用'x.xx'形式表示
def sanitize(tm_str):
if '-' in tm_str:
splitter = '-'
elif ':' in tm_str:
splitter = ':'
else:
return tm_str
(min, sec) = tm_str.split(splitter)
return min+'.'+sec
# 读取文件,并以字典形式返回用户名、出生日期及最快的3个时间
def get_coach_data(filename):
try:
with open(filename) as f:
data = f.readline().strip().split(',')
return ({'Name': data.pop(0),
'Dob': data.pop(0),
'Time': str(sorted(set([sanitize(t) for t in data]))[0:3])
})
except IOError as err:
print('IOError: '+str(err))
return None
# 数据处理
james_dic = get_coach_data('james2.txt')
julie_dic = get_coach_data('julie2.txt')
mikey_dic = get_coach_data('mikey2.txt')
sarah_dic = get_coach_data('sarah2.txt')
# 显示数据
print(james_dic)
print(julie_dic)
print(mikey_dic)
print(sarah_dic)
# 输出结果如下:

浙公网安备 33010602011771号