更新時(shí)間:2021-11-17 來源:黑馬程序員 瀏覽量:
程序中與數(shù)據(jù)相關(guān)的操作分為數(shù)據(jù)的存儲(chǔ)與讀寫。下面將對如何存儲(chǔ)與讀寫不同維度的數(shù)據(jù)進(jìn)行講解。
1.數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)通常存儲(chǔ)在文件之中,為了方便后續(xù)的讀寫操作,數(shù)據(jù)通常需要按照約定的組織方式進(jìn)行存儲(chǔ)。一維數(shù)據(jù)呈線性排列,一般用特殊字符分隔,具體示例如下。
(1)使用空格分隔:成都 杭州 重慶 武漢 蘇州 西安 天津
(2)使用逗號(hào)分隔:成都,杭州,重慶,武漢,蘇州,西安,天津
(3)使用&分隔:成都&杭州&重慶&武漢&蘇州&西安&天津
如上所示,在存儲(chǔ)一維數(shù)據(jù)時(shí)可使用不同的特殊字符分隔數(shù)據(jù)元素,但有幾點(diǎn)需要注意。
(1)同一文件或同組文件一般使用同一分隔符分隔。
(2)分隔數(shù)據(jù)的分隔符不應(yīng)出現(xiàn)在數(shù)據(jù)中。
(3)分隔符為英文半角符號(hào),一般不使用中文符號(hào)作為分隔符。
二維數(shù)據(jù)可視為多條一維數(shù)據(jù)的集合,當(dāng)二維數(shù)據(jù)只有一個(gè)元素時(shí),這個(gè)二維數(shù)據(jù)就是一維數(shù)據(jù)。國際上通用的一二維數(shù)據(jù)存儲(chǔ)格式為CSV(Commae-Separeted Values,逗號(hào)分隔值),CSV文件以純文本形式存儲(chǔ)表格數(shù)據(jù),文件的每一行對應(yīng)表格中的一條數(shù)據(jù)記錄,每條記錄由一個(gè)或多個(gè)字段組成,字段之間使用逗號(hào)(英文、半角)分隔。因?yàn)樽侄沃g可能使用除逗號(hào)外的其他分隔符,所以CSV也稱為字符分隔值。具體示例如下:
姓名,語文,數(shù)學(xué),英語,理綜 劉婧,124,137,145,260 張華,116,143,139,263 邢昭林,120,130,148,255 鞠依依,115,145,131,240 黃麗萍,123,108,121,235 趙越,132,100,112,210
CSV廣泛應(yīng)用于不同體系結(jié)構(gòu)下網(wǎng)絡(luò)應(yīng)用程序之間表格信息的交換之中,它本身并無明確格式標(biāo)準(zhǔn),具體標(biāo)準(zhǔn)一般由傳輸雙方協(xié)商決定。
2.數(shù)據(jù)讀取
在Windows平臺(tái)中,CSV文件的后級(jí)名為.csv,此種文件可通過辦公軟件OfficeExcel或記事本打開。將以上示例中CSV格式的數(shù)據(jù)存儲(chǔ)到當(dāng)前路徑下的score.csv文件中,通過Python程序讀取該文件中的數(shù)據(jù)并以列表形式打印,具體代碼如下:
csv file = open('score.csv') lines = [] for line in csv_file: line = line.replace ('\n', '') lifs.append (line.split(',')) print(lines) csv_file.close()
以上程序打開文件score.csv后通過對文件對象進(jìn)行迭代,在循環(huán)中逐條獲取文中的記錄,根據(jù)分隔符“,”切割記錄,將記錄存儲(chǔ)到了Python列表 lines之中,最后在終端打印了列表lines。執(zhí)行程序,程序的執(zhí)行結(jié)果如下:
號(hào)“:”分隔;其次value本身是一個(gè)數(shù)組,該數(shù)組中存儲(chǔ)了多名學(xué)生的成績,通過方括號(hào)組織,其中的元素通過分號(hào)“;”分隔;作為數(shù)組元素的學(xué)生成績的每項(xiàng)屬性亦為鍵值對,每項(xiàng)屬性通過逗號(hào)“,”分隔。
除JSON外,網(wǎng)絡(luò)平臺(tái)也會(huì)使用XML、HTML等格式組織多維數(shù)據(jù)。XML和HTML格式通過標(biāo)簽組織數(shù)據(jù)。例如將學(xué)生成績以XML格式存儲(chǔ),具體格式如下:
<高三二班考試成績> <姓名>陳誠</姓名><語文>124</語文><數(shù)學(xué)>127<數(shù)學(xué)/><英語>145<英語/> <理綜>259<理綜/> <姓名>黃思</姓名><語文>116</語文><數(shù)學(xué)>143<數(shù)學(xué)/><英語>119<英語/> <理綜>273<理綜/> ...... </高三二班考試成績>
對比JSON格式與XML、HTML格式可知,JSON格式更為直觀,且數(shù)據(jù)屬性的key只需存儲(chǔ)一次,在網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換時(shí)耗費(fèi)的流量更小。
Python中如何將數(shù)組轉(zhuǎn)為Json格式數(shù)據(jù)?