shg104

导航

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)

# 输出结果如下:

 

posted on 2017-07-04 15:20  shg104  阅读(92)  评论(0)    收藏  举报