從零學(xué)python系列之?dāng)?shù)據(jù)處理編程實(shí)例(一)
要求:分別以james,julie,mikey,sarah四個(gè)學(xué)生的名字建立文本文件,分別存儲(chǔ)各自的成績(jī),時(shí)間格式都精確為分秒,時(shí)間越短成績(jī)?cè)胶?,分別輸出每個(gè)學(xué)生的無(wú)重復(fù)的前三個(gè)最好成績(jī),且分秒的分隔符要統(tǒng)一為“.”
數(shù)據(jù)準(zhǔn)備:分別建立四個(gè)文本文件
james.txt 2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22
julie.txt 2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21
mikey.txt 2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38
sarah.txt 2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55
代碼實(shí)現(xiàn):
import os
os.chdir('C:\Python33\HeadFirstPython\hfpy_code\chapter5') #將工作空間修改為文件所在的目錄
#定義函數(shù)get_filedata從文件中取值
def get_filedata(filename):
try:
with open(filename) as f: #with語(yǔ)句打開(kāi)和自動(dòng)關(guān)閉文件
data=f.readline() #從文件中逐行讀取字符
return (data.strip().split(',')) #將字符間的空格清除后,用逗號(hào)分隔字符
except IOError as ioerr:
print ('File Error' + str(ioerr)) #異常處理,打印錯(cuò)誤
return (None)
#定義函數(shù)modify_time_format將所有文件中的時(shí)分表達(dá)方式統(tǒng)一為“分.秒”
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)
#定義函數(shù)get_prev_three返回文件中排名前三的不重復(fù)的時(shí)間成績(jī)
def get_prev_three(filename):
new_list=[modify_time_format(each_t) for each_t in get_filedata(filename)] #采用列表推導(dǎo)將統(tǒng)一時(shí)分表達(dá)方式后的記錄生成新的列表
delete_repetition=set(new_list) #采用集合set函數(shù)刪除新列表中重復(fù)項(xiàng),并生成新的集合
in_order=sorted(delete_repetition) #采用復(fù)制排序sorted函數(shù)對(duì)無(wú)重復(fù)性的新集合進(jìn)行排序
return (in_order[0:3]) #返回列表前三項(xiàng)
# 分別輸出對(duì)應(yīng)文件中排名前三的不重復(fù)的時(shí)間成績(jī)
print (get_prev_three("james.txt"))
print (get_prev_three("julie.txt"))
print (get_prev_three("mikey.txt"))
print (get_prev_three("sarah.txt"))
輸出結(jié)果:
['2.01', '2.22', '2.34']
['2.11', '2.23', '2.59']
['2.22', '2.38', '2.49']
['2.18', '2.25', '2.39']
- 對(duì)python .txt文件讀取及數(shù)據(jù)處理方法總結(jié)
- 從零學(xué)python系列之?dāng)?shù)據(jù)處理編程實(shí)例(二)
- python數(shù)據(jù)處理實(shí)戰(zhàn)(必看篇)
- 基于python爬蟲(chóng)數(shù)據(jù)處理(詳解)
- Python數(shù)據(jù)處理numpy.median的實(shí)例講解
- Python 數(shù)據(jù)處理庫(kù) pandas 入門(mén)教程基本操作
- 對(duì)python 數(shù)據(jù)處理中的LabelEncoder 和 OneHotEncoder詳解
- python實(shí)現(xiàn)爬蟲(chóng)統(tǒng)計(jì)學(xué)校BBS男女比例之?dāng)?shù)據(jù)處理(三)
- python 解決動(dòng)態(tài)的定義變量名,并給其賦值的方法(大數(shù)據(jù)處理)
- python文本數(shù)據(jù)處理學(xué)習(xí)筆記詳解
相關(guān)文章
解決python?pip安裝第三方模塊報(bào)錯(cuò):error:legacy-install-failure
pip是python的第三方庫(kù)管理器,可以根據(jù)所開(kāi)發(fā)項(xiàng)目的需要,使用pip相關(guān)命令安裝不同庫(kù),下面這篇文章主要給大家介紹了關(guān)于解決python?pip安裝第三方模塊報(bào)錯(cuò):error:?legacy?-?install?-?failure的相關(guān)資料,需要的朋友可以參考下2023-04-04PyTorch之前向傳播函數(shù)forward用法解讀
這篇文章主要介紹了PyTorch之前向傳播函數(shù)forward用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09python?pdfplumber庫(kù)批量提取pdf表格數(shù)據(jù)轉(zhuǎn)換為excel
這篇文章主要為大家介紹了python使用pdfplumber庫(kù)批量提取pdf表格數(shù)據(jù)轉(zhuǎn)換為excel格式的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06python2 與python3的print區(qū)別小結(jié)
這篇文章主要介紹了python2 與python3的print區(qū)別小結(jié),需要的朋友可以參考下2018-01-01關(guān)于tensorflow中tf.keras.models.Sequential()的用法
這篇文章主要介紹了關(guān)于tensorflow中tf.keras.models.Sequential()的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01python爬蟲(chóng) 爬取58同城上所有城市的租房信息詳解
這篇文章主要介紹了python爬蟲(chóng) 爬取58同城上所有城市的租房信息詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07python利用beautifulSoup實(shí)現(xiàn)爬蟲(chóng)
這篇文章主要介紹了python利用beautifulSoup實(shí)現(xiàn)爬蟲(chóng),需要的朋友可以參考下2014-09-09python利用socketserver實(shí)現(xiàn)并發(fā)套接字功能
這篇文章主要為大家詳細(xì)介紹了python利用socketserver實(shí)現(xiàn)并發(fā)套接字功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01pytest通過(guò)assert進(jìn)行斷言的實(shí)現(xiàn)
assert斷言是一種用于檢查代碼是否按預(yù)期工作的方法,在pytest中,assert斷言可以用于測(cè)試代碼的正確性,以確保代碼在運(yùn)行時(shí)按照預(yù)期工作,本文就來(lái)介紹一下如何使用,感興趣的可以了解下2023-12-12