更新時間:2021年11月18日09時28分 來源:黑馬程序員 瀏覽次數(shù):
程序中與數(shù)據(jù)相關的操作分為數(shù)據(jù)的存儲與讀寫。下面將對如何存儲與讀寫不同維度的數(shù)據(jù)進行講解。
1.數(shù)據(jù)存儲
數(shù)據(jù)通常存儲在文件之中,為了方便后續(xù)的讀寫操作,數(shù)據(jù)通常需要按照約定的組織方式進行存儲。一維數(shù)據(jù)呈線性排列,一般用特殊字符分隔,具體示例如下。
(1)使用空格分隔:成都 杭州 重慶 武漢 蘇州 西安 天津
(2)使用逗號分隔:成都,杭州,重慶,武漢,蘇州,西安,天津
(3)使用&分隔:成都&杭州&重慶&武漢&蘇州&西安&天津
如上所示,在存儲一維數(shù)據(jù)時可使用不同的特殊字符分隔數(shù)據(jù)元素,但有幾點需要注意。
(1)同一文件或同組文件一般使用同一分隔符分隔。
(2)分隔數(shù)據(jù)的分隔符不應出現(xiàn)在數(shù)據(jù)中。
(3)分隔符為英文半角符號,一般不使用中文符號作為分隔符。
二維數(shù)據(jù)可視為多條一維數(shù)據(jù)的集合,當二維數(shù)據(jù)只有一個元素時,這個二維數(shù)據(jù)就是一維數(shù)據(jù)。國際上通用的一二維數(shù)據(jù)存儲格式為CSV(Commae-Separeted Values,逗號分隔值),CSV文件以純文本形式存儲表格數(shù)據(jù),文件的每一行對應表格中的一條數(shù)據(jù)記錄,每條記錄由一個或多個字段組成,字段之間使用逗號(英文、半角)分隔。因為字段之間可能使用除逗號外的其他分隔符,所以CSV也稱為字符分隔值。具體示例如下:
姓名,語文,數(shù)學,英語,理綜 劉婧,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廣泛應用于不同體系結構下網(wǎng)絡應用程序之間表格信息的交換之中,它本身并無明確格式標準,具體標準一般由傳輸雙方協(xié)商決定。
2.數(shù)據(jù)讀取
在Windows平臺中,CSV文件的后級名為.csv,此種文件可通過辦公軟件OfficeExcel或記事本打開。將以上示例中CSV格式的數(shù)據(jù)存儲到當前路徑下的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后通過對文件對象進行迭代,在循環(huán)中逐條獲取文中的記錄,根據(jù)分隔符“,”切割記錄,將記錄存儲到了Python列表 lines之中,最后在終端打印了列表lines。執(zhí)行程序,程序的執(zhí)行結果如下:
號“:”分隔;其次value本身是一個數(shù)組,該數(shù)組中存儲了多名學生的成績,通過方括號組織,其中的元素通過分號“;”分隔;作為數(shù)組元素的學生成績的每項屬性亦為鍵值對,每項屬性通過逗號“,”分隔。
除JSON外,網(wǎng)絡平臺也會使用XML、HTML等格式組織多維數(shù)據(jù)。XML和HTML格式通過標簽組織數(shù)據(jù)。例如將學生成績以XML格式存儲,具體格式如下:
<高三二班考試成績> <姓名>陳誠</姓名><語文>124</語文><數(shù)學>127<數(shù)學/><英語>145<英語/> <理綜>259<理綜/> <姓名>黃思</姓名><語文>116</語文><數(shù)學>143<數(shù)學/><英語>119<英語/> <理綜>273<理綜/> ...... </高三二班考試成績>
對比JSON格式與XML、HTML格式可知,JSON格式更為直觀,且數(shù)據(jù)屬性的key只需存儲一次,在網(wǎng)絡中進行數(shù)據(jù)交換時耗費的流量更小。
HDFS讀寫流程介紹,HDFS讀數(shù)據(jù)和寫數(shù)據(jù)的原理是什么?
Spark SQL通過JDBC連接MySQL讀寫數(shù)據(jù)