版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Python3基礎教程第2版 慕課版第7章文件和數(shù)據(jù)格式化本章主要內容:文件讀寫CSV文件數(shù)據(jù)組織的維度7.1 文件本節(jié)主要內容:文件類型打開和關閉文件讀寫文本文件讀寫二進制文件用文件存儲對象目錄操作7.1.1 文件類型通常,文件可分為文本文件和二進制文件。文本文件根據(jù)字符編碼保存文本,常見字符編碼如ASCII、UTF-8、GB2312等。文本文件按字符讀取文件,一個字符占用一個或多個字節(jié)。文本文件常用于保存字符組成的文本,整個文件可看作一個長字符串。二進制文件存儲的是數(shù)據(jù)的二進制代碼(位0和位1),即將數(shù)據(jù)在內存中的存儲形式復制到文件中。二進制文件沒有字符編碼,文件的存儲格式與用途無關。二進
2、制文件通常用于保存圖片、音頻和視頻等數(shù)據(jù)。圖片、音頻和視頻有不同的編碼格式,如png格式的圖片、mp3格式的音頻、mp4格式的視頻等。二進制文件通常按字節(jié)讀取文件。Python根據(jù)打開模式按文本文件或二進制文件格式讀寫文件中的數(shù)據(jù)。按文本文件格式讀取文件數(shù)據(jù),示例代碼如下。 file=open(data.txt,rt)#打開文件 print(file.readline()#從文件讀一行數(shù)據(jù),輸出Python3基礎教程 file.close()#關閉文件按文本文件格式讀取數(shù)據(jù)時,Python會根據(jù)字符編碼將數(shù)據(jù)解碼為字符串,將數(shù)據(jù)轉換為有意義的字符。按二進制文件格式讀取文件數(shù)據(jù),示例代碼如下。
3、file=open(data.txt,rb) print(file.readline()bPython3xbbxf9xb4xa1xbdxccxb3xcc file.close()按二進制文件格式讀取數(shù)據(jù)時,數(shù)據(jù)為字節(jié)流,Python不執(zhí)行解碼操作,讀取的數(shù)據(jù)作為bytes字符串,并按bytes字符串格式輸出。7.1.2 打開和關閉文件可用Python內置的open()函數(shù)來打開文件,并返回關聯(lián)的文件對象。open()函數(shù)基本格式為如下。 myfile = open(filename,mode)其中:myfile為引用文件對象的變量filename為文件名字符串mode為文件讀寫模式。在文件名中
4、可包含相對或絕對路徑,省略路徑時,Python在當前工作目錄中搜索文件。IDLE的當前工作目錄為Python安裝目錄。在系統(tǒng)命令提示符窗口中執(zhí)行python.exe進入交互環(huán)境或執(zhí)行Python程序時,當前目錄為Python的當前工作目錄。文件讀寫模式“r”:只讀模式,默認值?!皐”:只寫模式,創(chuàng)建新文件。若文件已存在,則原來的文件被覆蓋。a”:只寫、追加模式。若文件存在,在文件末尾添加數(shù)據(jù)。文件不存在時會創(chuàng)建新文件?!皒”:只寫模式,創(chuàng)建新文件。若文件已存在,則報錯?!皌”:按文本格式讀寫文件數(shù)據(jù),默認方式?!癰”:按二進制格式讀寫文件數(shù)據(jù)?!?”:組合讀寫模式,同時進行讀、寫操作?!皌”“
5、b”和“r”“w”“a”“x”可組合使用,“+”必須和“r”“w”“a”組合使用。常用文件讀寫模式組合省略讀寫模式:只能按文本格式從文件讀取數(shù)據(jù),等同于“rt”。例如,open(data.txt)?!皉b”:只能按二進制格式從文件讀取數(shù)據(jù)。例如,open(data.txt,rb)?!皐”和“wt”:只能按文本格式向文件寫入數(shù)據(jù)。例如,open(data.txt,w)。“r+”:可按文本格式從文件讀取數(shù)據(jù),或向文件寫入數(shù)據(jù)。例如,open(data.txt,r+)。“wb”:只能按二進制格式向文件寫入數(shù)據(jù)。例如,open(data.txt,wb)?!皉b+”:可按二進制格式從文件讀取數(shù)據(jù),或向文
6、件寫入數(shù)據(jù)。例如,open(data.txt,rb+)?!癮+”:可按文本格式從文件讀取數(shù)據(jù),或向文件寫入數(shù)據(jù),寫入的數(shù)據(jù)始終添加到文件末尾。例如,open(data.txt,a+)?!癮b+”:可按二進制格式從文件讀取數(shù)據(jù),或向文件寫入數(shù)據(jù),寫入的數(shù)據(jù)始終添加到文件末尾。例如,open(data.txt,ab+)。文件指針打開文件后,Python用一個文件指針記錄當前讀寫位置。以“w”或“a”模式打開文件時,文件指針指向文件末尾以“r”模式打開文件時,文件指針指向文件開頭。Python始終在文件指針的位置讀寫數(shù)據(jù),讀取或寫入一個數(shù)據(jù)后,根據(jù)數(shù)據(jù)長度,向后移動文件指針。close()方法clo
7、se()方法用于關閉文件,示例代碼如下。myfile.close()#關閉文件通常,Python會使用內存緩沖區(qū)緩存文件數(shù)據(jù)。關閉文件時,Python將緩沖的數(shù)據(jù)寫入文件,然后關閉文件,釋放對文件的引用。程序結束時,Python可自動關閉未使用的文件。flush()方法可將緩沖區(qū)的內容寫入文件,但不關閉文件,示例代碼如下。myfile.flush()7.1.3 讀寫文本文件文本文件有關的讀寫方法如下:read():將從文件指針位置開始到文件末尾的內容作為一個字符串返回。read(n):將從文件指針位置開始的n個字符作為一個字符串返回。readline():將從文件指針位置開始到下一個換行符號的
8、內容作為一個字符串返回,讀取內容包含換行符號。readlines():將從文件指針位置開始到文件末尾的內容作為一個列表返回,每一行的字符串作為一個列表元素。write(xstring):在文件指針位置寫入字符串,返回寫入的字符個數(shù)。writelines(xlist):將列表中的數(shù)據(jù)合并為一個字符串寫入到文件指針位置,返回寫入的字符個數(shù)。seek(n):將文件指針移動到第n個字節(jié),0表示指向文件開頭。tell():返回文件指針當前位置。文本文件按字符讀取數(shù)據(jù),如果文件包含Unicode字符,Python會自動進行轉換。文本文件中每行末尾以回車換行符號結束在讀取的字符串中,Python用“n”代替
9、回車換行符號。二進制文件讀取的回車換行符號為“rn”。文本文件code.txt的數(shù)據(jù)如下one第一行two第二行three第三行1以“r”模式打開文件讀數(shù)據(jù)以“r”模式打開文件時,文件指針位于文件開頭,只能從文件讀取數(shù)據(jù),示例代碼如下。 myfile=open(rd:code.txt)#以默認只讀方式打開文件x=myfile.read()#讀文件全部內容到字符串x#每行末尾的換行符號在字符串中為“n”one第一行ntwo第二行nthree第三行 print(x)#打印格式與原文件完全一致one第一行two第二行three第三行 myfile.read()#文件指針已指向文件末尾,返回空字符串
10、myfile.seek(0)#將文件指針移動到文件開頭0 myfile.read(5)#讀5個字符one第一 myfile.tell()#返回文件指針的當前位置7 myfile.readline()#讀取從文件指針當前位置到當前行末尾的字符串行n myfile.readline()#讀下一行two第二行n myfile.seek(0)0 myfile.readlines()#讀文件全部內容到列表one第一行n, two第二行n, three第三行 myfile.seek(0)0 for x in myfile:print(x)#以迭代方式讀文件one第一行#請思考兩行數(shù)據(jù)之間為什么有一個空行?
11、two第二行three第三行 myfile.close()#關閉文件2以“r+”模式打開文件以“r+”模式打開文件時,文件操作具有下列特點??蓮奈募x取數(shù)據(jù),也可向文件寫入數(shù)據(jù)。剛打開文件時,文件指針指向文件開頭。在執(zhí)行讀操作后執(zhí)行寫操作時,不管文件指針位置在哪里,都將數(shù)據(jù)寫入文件末尾。要在特定位置寫入數(shù)據(jù),需要先執(zhí)行seek()函數(shù)指定文件指針位置,然后寫入數(shù)據(jù)。 myfile=open(rd:code.txt,r+) myfile.write(oneline)#寫入字符串,此時寫入到文件開頭,覆蓋原數(shù)據(jù)7 myfile.seek(0)#定位文件指針到文件開頭0 myfile.read()#
12、讀取全部數(shù)據(jù)oneline行ntwo第二行nthree第三行 myfile.seek(7)#將文件指針指向第8個字節(jié)(位置為7)7 myfile.write(123456)#寫入數(shù)據(jù),會覆蓋原第一行末尾的換行符號6 myfile.seek(0)#定位文件指針到文件開頭0 myfile.read()#讀取數(shù)據(jù),查看前面寫入的數(shù)據(jù)oneline123456o第二行nthree第三行 myfile.seek(0)#定位文件指針到文件開頭0 myfile.read(5)#讀取5個字符oneli myfile.tell()#查看文件指針位置5 myfile.write(xxx)#寫入數(shù)據(jù),讀取數(shù)據(jù)后立即
13、寫入,數(shù)據(jù)寫入文件末尾3 myfile.seek(0)#定位文件指針到文件開頭0 myfile.read()#讀取數(shù)據(jù),查看前面寫入的數(shù)據(jù),“xxx”在文件末尾oneline123456o第二行nthree第三行xxx myfile.close()#關閉文件3以“w”模式打開文件以“w”模式打開文件時,會創(chuàng)建一個新文件。如果存在同名文件,原來的文件會被覆蓋。所以,使用“w”模式打開文件時應特別小心。以“w”模式打開文件時,只能向文件寫入數(shù)據(jù)。 myfile=open(rd:code2.txt,w) myfile.write(onen)#將字符串寫入文件4 myfile.writelines(1
14、,2,abc)#將列表寫入文件,列表對象必須都是字符串 myfile.close()#關閉文件 myfile=open(rd:code2.txt)#重新打開文件,讀取前面寫入的數(shù)據(jù) myfile.read()onen12abc myfile.close()#關閉文件在向文本文件寫入需要換行的數(shù)據(jù)時,應在字符串末尾嵌入“n”,否則數(shù)據(jù)不會換行。4以“w+”模式打開文件以“w+”模式打開文件時,允許同時讀寫文件 myfile=open(rd:code2.txt,w+) myfile.read()#新建文件,所以其中沒有數(shù)據(jù),返回空字符串 myfile.write(onen)#將字符串寫入文件4 m
15、yfile.writelines(1,2,abc) myfile.seek(0)#將文件指針移動到文件開頭0 myfile.readline()#讀第1行onen myfile.readline()#讀第2行12abc myfile.readline()#已經(jīng)到文件末尾,返回空字符串 myfile.seek(4)#將文件指針移動到第4個字節(jié)之后4 myfile.write(xxxxxxx)#將字符串寫入文件7 myfile.seek(0)#將文件指針移動到文件開頭0 myfile.read()#讀取全部數(shù)據(jù)onenxxxxxxx myfile.close()#關閉文件5以“a”模式打開文件以“
16、a”模式打開文件時,只能向文件寫入數(shù)據(jù),文件打開時文件指針指向文件末尾,向文件寫入的數(shù)據(jù)始終添加到文件末尾。 myfile=open(rd:code2.txt,a) myfile.write(n123456) #將字符串寫入文件7 myfile.seek(4)4 myfile.write(*)#雖然文件指針指向第5個字符,但仍寫入文件末尾5 myfile=open(rd:code2.txt)#重新以只讀方式打開文件 print(myfile.read()#查看讀取的數(shù)據(jù)onexxxxxxx123456*6以a+”模式打開文件“a+”與“a” 模式的唯一區(qū)別是前者除了允許寫入數(shù)據(jù),還可以讀取文件
17、數(shù)據(jù) myfile=open(rd:code2.txt,a+) myfile.tell()#查看文件指針位置,此時應為文件末尾25 myfile.write(n新添加的數(shù)據(jù))#將字符串寫入文件7 myfile.seek(0)#將文件指針移動到文件開頭0 print(myfile.read()#打印讀取的文件內容onexxxxxxx123456*新添加的數(shù)據(jù) myfile.seek(5)#將文件指針移動第5個字符之后5 myfile.write(newdata)#將字符串寫入文件7 myfile.seek(0)#將文件指針移動到文件開頭0 print(myfile.read()#打印讀取的數(shù)據(jù),
18、查看前面寫入的“newdata”的位置onexxxxxxx123456新添加的數(shù)據(jù)newdata myfile.close()#關閉文件7.1.4 讀寫二進制文件上一節(jié)中講述的文本文件的各種讀寫方法均可用于二進制文件,區(qū)別在于:二進制文件讀寫的是bytes字符串。例如,下面的代碼先以“wb”模式創(chuàng)建一個二進制文件,然后分別用“r”和“rb”模式打開文件,讀取文件內容。 myfile=open(rd:code3.txt,wb)#創(chuàng)建二進制文件 myfile.write(aaaaa)#出錯,二進制文件只能寫入bytes字符串Traceback (most recent call last): Fi
19、le , line 1, in TypeError: a bytes-like object is required, not str myfile.write(baaaaa)#正確,將bytes字符串寫入文件5 myfile.write(bnbbbb)5 myfile.close() myfile=open(rd:code3.txt,r) print(myfile.read()#打印讀取文件的全部內容aaaaabbbb myfile=open(rd:code3.txt,rb) print(myfile.read()#打印讀取文件的全部內容baaaaanbbbb myfile.close()#
20、關閉文件7.1.5 用文件存儲對象用文本文件或二進制文件格式直接存儲Python中的各種對象,通常需要進行繁瑣的轉換。可以使用Python標準模塊pickle處理文件中對象的讀寫 x=1,2,abc#創(chuàng)建列表對象 y=name:John,age:25#創(chuàng)建字典對象 myfile=open(rd:objdata.bin,wb) import pickle#導入pickle模塊 pickle.dump(x,myfile)#將列表對象寫入文件 pickle.dump(y,myfile)#將字典對象寫入文件 myfile.close()#關閉文件 myfile=open(re:pytempobjdat
21、a.bin,rb) myfile.read()#直接讀取文件中的全部內容,查看內容bx80 x03qx00(Kx01Kx02Xx03x00 x00 x00abcqx01e.x80 x03qx00(Xx03x00 x00 x00ageqx01Kx19Xx04x00 x00 x00nameqx02Xx04x00 x00 x00Johnqx03u. myfile.seek(0)#將文件指針移動到文件開頭0 x=pickle.load(myfile)#從文件讀取對象 x1, 2, abc x=pickle.load(myfile)#從文件讀取對象 xage: 25, name: John7.1.6 目
22、錄操作文件操作通常都會涉及到目錄操作。目錄是一種特殊的文件,它存儲當前目錄中的子目錄和文件的相關信息。Python的os模塊提供了目錄操作函數(shù),使用之前應先導入模塊,示例代碼如下。import os1os.getcwd()該方法返回Python的當前工作目錄,示例代碼如下。 os.getcwd()D:pytemp2os.mkdir()該方法用于創(chuàng)建子目錄,示例代碼如下。 os.mkdir(temp)#在當前目錄中創(chuàng)建子目錄 os.mkdir(d:ptemtest)#在絕對路徑d:ptem中創(chuàng)建子目錄test3os.rmdir()該方法用于刪除指定的空子目錄,示例代碼如下。 os.rmdir(t
23、emp)#刪除當前目錄的子目錄 os.rmdir(d: ptemtest)#刪除絕對路徑中的子目錄testos.rmdir()只能刪除空的子目錄,刪除非空子目錄時會出錯,示例代碼如下。 os.rmdir(pycode)Traceback (most recent call last): File , line 1, in OSError: WinError 145 目錄不是空的。: pycode4os.listdir()該方法返回目錄包含的子目錄和文件名稱,示例代碼如下。 os.listdir()#列出當前目錄內容code2.txt, pycode, temp os.listdir(d:pte
24、m)#列出指定目錄內容test, test.py5os.chdir()該方法用于改變當前目錄,示例代碼如下。 os.getcwd()#查看當前目錄D:pytemp os.mkdir(tem)#在當前目錄中創(chuàng)建子目錄 os.chdir(tem)#切換當前目錄 os.getcwd()#查看新的當前目錄D:pytemptem os.chdir(d:ptem)#用絕對路徑指定要切換的目錄 os.getcwd()d:ptem os.chdir(c:/)#切換到其他磁盤的目錄 os.getcwd()c: 6os.rename()該方法用于修改文件的名稱,示例代碼如下。 os.rename(rd:ptemt
25、est.py,d:ptemcode.py)7os.remove()該方法用于刪除指定的文件,示例代碼如下。 os.remove(d:ptemcode.py)7.2 讀寫CSV文件本節(jié)主要內容:CSV文件的基本概念讀CSV文件數(shù)據(jù)將數(shù)據(jù)寫入CSV文件7.2.1 CSV文件的基本概念CSV指Comma-Separated Values,即逗號分隔值。CSV文件也是文本文件,其存儲使用特定分隔符分隔的數(shù)據(jù)。分隔符可使用逗號、空格、制表符、其他字符或字符串。例如,下面的內容是一個典型的CSV文件內容。專業(yè)名稱,層次,科類工程造價,高起專,文科工商企業(yè)管理,高起專,文科建筑工程技術,高起專,理科工程造價
26、,高起專,理科汽車服務工程,專升本,理工類可用Windows記事本創(chuàng)建該文件,保存時使用UTF-8編碼格式。使用open()函數(shù)打開文件時,應用“encoding=utf-8”作為參數(shù)指定編碼格式,以便Python程序正確讀取其中的漢字。CSV文件也可使用Excel打開、查看和編輯數(shù)據(jù)。CSV文件通常由多個記錄組成,第1行通常為記錄的各個字段名稱,第2行開始為記錄數(shù)據(jù)。每條記錄包含相同的字段,字段之間用分隔符分隔??梢允褂胦pen()函數(shù)打開CSV文件,按文本文件方式讀寫CSV數(shù)據(jù)。采用這種方式需要將讀取的每行字符串轉換成字段數(shù)據(jù),寫入時需要添加分隔符。Python提供的csv模塊提供了CSV
27、文件讀寫功能。7.2.2 讀CSV文件數(shù)據(jù)csv模塊提供了兩種讀取器對象來讀取CSV文件數(shù)據(jù):常規(guī)讀取器和字典讀取器。1使用常規(guī)讀取器csv模塊中的reader()函數(shù)用于創(chuàng)建常規(guī)讀取器對象,其基本格式如下。csvreader = csv.reader(csvfile, delimiter=分隔符)其中:變量csvreader用于引用讀取器對象;csvfile是open()函數(shù)返回的文件對象;delimiter參數(shù)指定CSV文件使用的數(shù)據(jù)分隔符,默認為逗號。常規(guī)讀取器對象是一個可迭代對象,每次迭代返回一個包含一行數(shù)據(jù)的列表,列表元素對應CSV記錄的各個字段??捎胒or循環(huán)或next()函數(shù)迭代
28、常規(guī)讀取器對象。 import csv csvfile=open(rd:招生專業(yè).csv,encoding=utf-8) csvreader=csv.reader(csvfile)#創(chuàng)建讀取器對象 for row in csvreader:#用循環(huán)迭代讀取CSV文件. print(row)#輸出包含CSV文件數(shù)據(jù)行的列表. csvfile.seek(0)#將文件指針移動到文件開頭0 next(csvreader)#使用next()函數(shù)迭代讀取CSV文件專業(yè)名稱, 層次, 科類 next(csvreader)工程造價, 高起專, 文科 next(csvreader)工商企業(yè)管理, 高起專, 文科
29、 csvfile.close()#關閉文件2使用字典讀取器csv模塊中的DictReader()函數(shù)用于創(chuàng)建字典讀取器對象,其基本格式如下。csvreader = csv.DictReader(csvfile)其中:變量csvreader用于引用讀取器對象csvfile是open()函數(shù)返回的文件對象。字典讀取器對象是一個可迭代對象,每次迭代返回一個包含一行數(shù)據(jù)的排序字典對象(OrderedDict,即排好序的字典對象)。字典讀取器對象默認將CSV文件的第1行作為字段名稱,將字段名稱作為字典中的“鍵”。CSV文件中第2行開始的每行數(shù)據(jù)按順序作為“鍵”映射的“值”??捎胒or循環(huán)或next()函
30、數(shù)迭代字典讀取器對象。 import csv csvfile=open(rd:招生專業(yè).csv,encoding=utf-8) csvreader=csv.DictReader(csvfile)#創(chuàng)建讀取器對象 for row in csvreader:#用循環(huán)迭代讀取CSV文件. print(row) #輸出包含CSV文件數(shù)據(jù)行的字典對象. csvfile.seek(0)0 for row in csvreader:#用“鍵”索引輸出數(shù)據(jù). print(row專業(yè)名稱,row層次,row科類,sep=t). csvfile.seek(0)0 next(csvreader) #用next()函
31、數(shù)迭代OrderedDict(專業(yè)名稱, 專業(yè)名稱), (層次, 層次), (科類, 科類) next(csvreader)OrderedDict(專業(yè)名稱, 工程造價), (層次, 高起專), (科類, 文科) row=next(csvreader) print(row專業(yè)名稱,row層次,row科類)工商企業(yè)管理 高起專 文科 csvfile.close()7.2.3 將數(shù)據(jù)寫入CSV文件1用常規(guī)寫對象寫數(shù)據(jù)常規(guī)寫對象由csv.writer()函數(shù)創(chuàng)建,其基本格式如下。 csvwriter=csv.writer(csvfile)其中:變量csvwriter用于引用寫對象,csvfile是o
32、pen()函數(shù)返回的文件對象。寫對象的writerow()方法用于向CSV文件寫入一行數(shù)據(jù),其基本格式如下。 csvwriter.writerow(data)其中,data是一個列表對象,包含一行CSV數(shù)據(jù)。將數(shù)據(jù)寫入CSV后,writerow()方法會在每行數(shù)據(jù)末尾添加兩個換行符號。 import csv csvfile=open(d:/csvdata2.txt,w)#打開文件 csvwriter=csv.writer(csvfile)#創(chuàng)建常規(guī)寫對象 csvwriter.writerow(xm,sex,age)#寫入字段標題12 csvwriter.writerow(張三,男,25)#寫入
33、數(shù)據(jù)行9 csvwriter.writerow(韓梅梅,女,18)#寫入數(shù)據(jù)行10 csvfile.close()#關閉文件 csvfile=open(d:/csvdata2.txt)#以只讀模式打開文件 csvfile.read()#讀取全部數(shù)據(jù),注意每行末尾有兩個換行符號xm,sex,agenn張三,男,25nn韓梅梅,女,18nn csvfile.seek(0)0 print(csvfile.read() #打印文件數(shù)據(jù),因為每行末尾有兩個換行符號,所以有空行出現(xiàn)xm,sex,age張三,男,25韓梅梅,女,182用字典寫對象向CSV文件寫入數(shù)據(jù)字典寫對象由csv.DictWriter(
34、)函數(shù)創(chuàng)建,其基本格式如下。 csvwriter= csv.DictWriter(csvfile, fieldnames=字段名列表)其中:變量csvwriter用于引用寫對象csvfile是open()函數(shù)返回的文件對象。參數(shù)fieldnames用列表指定字段名,它決定將字典寫入CSV文件時,“鍵:值”對中的各個值的寫入順序。字典寫對象的writerow()方法用于向CSV文件寫入一行數(shù)據(jù),其基本格式如下。 csvwriter.writerow(data)其中,data是一個字典對象,包含一行CSV數(shù)據(jù)。 import csv csvfile=open(d:/csvdata2.txt,w)#
35、打開文件 csvwriter=csv.DictWriter(csvfile,fieldnames=xm,sex,age)#創(chuàng)建字典寫對象 csvwriter.writeheader()#寫入字段名 csvwriter.writerow(xm:韓梅梅,sex:女,age:18)#寫數(shù)據(jù)10 csvwriter.writerow(xm:Mike,sex:male,age:20)#寫數(shù)據(jù)14 csvfile.close() csvfile=open(d:/csvdata2.txt)#以只讀模式打開文件 csvfile.read()#讀取數(shù)據(jù)進行查看xm,sex,agenn韓梅梅,女,18nnMike
36、,male,20nn7.3 數(shù)據(jù)組織的維度本節(jié)主要內容:一維數(shù)據(jù)的處理二維數(shù)據(jù)的處理數(shù)據(jù)排序數(shù)據(jù)查找7.3.1 基本概念計算機在處理數(shù)據(jù)時,總是按一定的格式來組織數(shù)據(jù),以便提高處理效率。數(shù)據(jù)的組織格式表明數(shù)據(jù)之間的基本關系和邏輯,進而形成“數(shù)據(jù)組織的維度”。根據(jù)數(shù)據(jù)關系的不同,可將數(shù)據(jù)組織分為一維數(shù)據(jù)、二維數(shù)據(jù)和高維(或多維)數(shù)據(jù)。1一維數(shù)據(jù)一維數(shù)據(jù)由具有對等關系的有序或無序的數(shù)據(jù)組成,采用線性方式組織。數(shù)學中的集合和數(shù)組就是典型的一維數(shù)據(jù)。例如,下面的一組專業(yè)名稱就屬于一維數(shù)據(jù)。 計算機應用,工程造價,會計學,影視動畫2二維數(shù)據(jù)二維數(shù)據(jù)也稱為表格數(shù)據(jù),由具有關聯(lián)關系的數(shù)據(jù)組成,采用二維表格組
37、織數(shù)據(jù)。數(shù)學中的矩陣、二維表格都屬于二維數(shù)據(jù)。例如,下面的成績表是一組二維數(shù)據(jù)。姓名語文數(shù)學物理小明808590韓梅梅978790李雷8890703高維數(shù)據(jù)維度超過二維的數(shù)據(jù)都稱為高維數(shù)據(jù)。例如,成績表加上學期,表示學生每學期的各科成績,則構成三維數(shù)據(jù)。再加上學校信息,表示多個學校的學生在每個學期的各科成績,則構成四維數(shù)據(jù)。高維數(shù)據(jù)在Web系統(tǒng)中十分常見,例如,XML、JSON、HTML等格式均可用于表示高維數(shù)據(jù)。高維數(shù)據(jù)通常使用JSON字符串表示,可以多層嵌套。高維數(shù)據(jù)示例下面的JSON字符串是兩個學期的學生課程成績數(shù)據(jù)。第一學期: 姓名:小明,語文:80,數(shù)學:85,物理:90, 姓名:韓
38、梅梅,語文:97,數(shù)學:87,物理90:, 姓名:李雷,語文:88,數(shù)學:90,物理:70 ,第二學期: 姓名:小明,語文:89,數(shù)學:78,物理:97, 姓名:韓梅梅,語文:77,數(shù)學:88,物理:89, 姓名:李雷,語文:97,數(shù)學:76,物理:88 ,7.3.2 一維數(shù)據(jù)的處理一維數(shù)據(jù)是簡單的線性結構,在Python中可用列表表示,示例代碼如下。 專業(yè)=計算機應用,工程造價,會計學,影視動畫 print(專業(yè))計算機應用, 工程造價, 會計學, 影視動畫 專業(yè)0計算機應用一維數(shù)據(jù)可用文本文件進行存儲,文件可使用空格、逗號、分號等作為數(shù)據(jù)的分隔符,示例代碼如下。計算機應用 工程造價 會計學
39、 影視動畫計算機應用,工程造價,會計學,影視動畫計算機應用;工程造價;會計學;影視動畫在將一維數(shù)據(jù)寫入文件時,除了寫入數(shù)據(jù)之外,還需要額外寫入分隔符。在從文件讀取數(shù)據(jù)時,需使用分隔符來分解字符串 file=open(rd:data1.txt,w)#打開文本文件專業(yè)=計算機應用,工程造價,會計學,影視動畫#用列表表示一維數(shù)據(jù) for n in range(len(專業(yè))-1):#將最后一個數(shù)據(jù)之前的數(shù)據(jù)寫入文件. file.write(專業(yè)n)#寫入數(shù)據(jù). file.write( )#寫入分隔符. file.write(專業(yè)n+1)#寫入最后一個數(shù)據(jù)4 file=open(rd:data1.tx
40、t)#重新打開文件 print(file.read()#輸出從文件讀取的數(shù)據(jù)計算機應用 工程造價 會計學 影視動畫 file.seek(0)0 zy=file.read() #將文件數(shù)據(jù)讀出,存入字符串 zy計算機應用 工程造價 會計學 影視動畫 data=zy.split( )#將字符串解析為列表,還原數(shù)據(jù) data計算機應用, 工程造價, 會計學, 影視動畫7.3.3 二維數(shù)據(jù)的處理二維數(shù)據(jù)可看作是嵌套的一維數(shù)據(jù),即一維數(shù)據(jù)的每個數(shù)據(jù)項為一組一維數(shù)據(jù)。可用列表來表示二維數(shù)據(jù),示例代碼如下。 scores=姓名,語文,數(shù)學,物理, 小明,80,85,90,韓梅梅,97,87,90,李雷,88,90,70可使用CSV文件存儲二維數(shù)據(jù),從文件讀取二維數(shù)據(jù)時,應注意文件末尾的換行符的處理 scores=姓名,語
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省九江市田家炳實驗中學2024-2025學年高一上學期12月月考歷史試題(含答案)
- 河南省商丘市柘城縣2024-2025學年七年級上學期期末地理試卷(含答案)
- 2024獵頭委托合同范本
- 2025年度出口運輸貨物跟蹤與查詢服務合同3篇
- 2024軟件測試與軟件生命周期管理合同3篇
- 2024版建設行業(yè)勞務分包協(xié)議書版B版
- 福建省南平市將口鎮(zhèn)中學2022年高一數(shù)學文上學期期末試卷含解析
- 2024高端裝備制造技術引進與培訓合同
- 2024版城市廣告牌施工協(xié)議細則版B版
- 2024民政局離婚協(xié)議書參考樣板及法律依據(jù)6篇
- 2025年湖南出版中南傳媒招聘筆試參考題庫含答案解析
- 2025年度商用廚房油煙機安裝與維護服務合同范本3篇
- 2024年03月恒豐銀行2024年春季招考畢業(yè)生筆試歷年參考題庫附帶答案詳解
- 網(wǎng)絡安全系統(tǒng)運維方案
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應用實踐指導材料之14:“6策劃-6.3變更的策劃”(雷澤佳編制-2025B0)
- 2024年特厚板行業(yè)現(xiàn)狀分析:中國特厚板市場占總銷售量45.01%
- 2025年中國地質調查局烏魯木齊自然資源綜合調查中心招聘19人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 中國兒童重癥監(jiān)護病房鎮(zhèn)痛和鎮(zhèn)靜治療專家共識2024解讀
- 音樂老師年度總結5篇
- 2024版商標許可使用合同與商標授權協(xié)議3篇
- 學生學情分析報告范文
評論
0/150
提交評論