在上一節從零學python系列之數據處理編程實例(一)的基礎上數據發生了變化,文件中除了學生的成績外,新增了學生姓名和出生年月的信息,因此將要成變成:分別根據姓名輸出每個學生的無重復的前三個最好成績和出生年月
數據準備:分別建立四個文本文件
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
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
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
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
在上一節基礎上,修改部分代碼,將新要求實現如下:
代碼如下:
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)) #異常處理,打印錯誤
新聞熱點
疑難解答