這篇文章將為大家詳細(xì)講解有關(guān)python如何讀寫csv xml json文件,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)赤坎免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。CSV 數(shù)據(jù)
CSV文件是存儲(chǔ)數(shù)據(jù)的最常見方式,你會(huì)發(fā)現(xiàn),Kaggle競賽中的大多數(shù)數(shù)據(jù)都是以這種方式存儲(chǔ)的。 我們可以使用Python內(nèi)置的csv庫讀寫CSV文件,通常,我們將數(shù)據(jù)讀入一個(gè)列表中,列表中每個(gè)元素又是一個(gè)列表,代表一行數(shù)據(jù)。
觀察下面的代碼,當(dāng)我們運(yùn)行 csv.reader() 時(shí),就可以訪問到我們指定的CSV數(shù)據(jù)文件。 而 csvreader.next() 函數(shù)的作用是從CSV中讀取一行,每次調(diào)用它,它都會(huì)移動(dòng)到下一行。 我們還可以通過 for row in csvreader 使用for循環(huán)遍歷csv的每一行。 另外,最好確保每一行的列數(shù)相同,否則,在處理列表時(shí)可能會(huì)遇到一些錯(cuò)誤。
import csv filename = "my_data.csv" fields = [] rows = [] # 讀取csv文件 with open(filename, 'r') as csvfile: # 創(chuàng)建一個(gè)csv reader對(duì)象 csvreader = csv.reader(csvfile) # 從文件中第一行中讀取屬性名稱信息 # fields = next(csvreader) python3.2 以上的版本使用 fields = csvreader.next() # 接著一行一行讀取數(shù)據(jù) for row in csvreader: rows.append(row) # 打印前5行信息 for row in rows[:5]: print(row)
在Python將數(shù)據(jù)寫入CSV也很容易,在一個(gè)單獨(dú)的列表中設(shè)置屬性名稱,并將要寫入的數(shù)據(jù)存儲(chǔ)在一個(gè)列表中。 這一次,我們將創(chuàng)建一個(gè) writer() 對(duì)象,并使用它將數(shù)據(jù)寫入文件,這與我們讀取數(shù)據(jù)的方式非常相似。
import csv # 屬性名稱 fields = ['Name', 'Goals', 'Assists', 'Shots'] # csv文件中每一行的數(shù)據(jù),一行為一個(gè)列表 rows = [ ['Emily', '12', '18', '112'], ['Katie', '8', '24', '96'], ['John', '16', '9', '101'], ['Mike', '3', '14', '82']] filename = "soccer.csv" # 將數(shù)據(jù)寫入到csv文件中 with open(filename, 'w+') as csvfile: # 創(chuàng)建一個(gè)csv writer對(duì)象 csvwriter = csv.writer(csvfile) # 寫入屬性名稱 csvwriter.writerow(fields) # 寫入數(shù)據(jù) csvwriter.writerows(rows)
當(dāng)然,使用強(qiáng)大的pandas庫將會(huì)使處理數(shù)據(jù)變得容易很多,從CSV讀取和寫入文件都只需要一行代碼!
import pandas as pd filename = "my_data.csv" # 讀取csv文件數(shù)據(jù) data = pd.read_csv(filename) # 打印前5行 print(data.head(5)) # 將數(shù)據(jù)寫入到csv文件中 data.to_csv("new_data.csv", sep=",", index=False)
我們甚至可以使用pandas通過一行代碼快速將CSV轉(zhuǎn)換為字典列表。 轉(zhuǎn)換為字典列表之后,我們可以使用 dicttoxml 庫將其轉(zhuǎn)換為XML格式,我們還可以將它保存為JSON文件!
import pandas as pd from dicttoxml import dicttoxml import json # 創(chuàng)建一個(gè)DataFrame data = {'Name': ['Emily', 'Katie', 'John', 'Mike'], 'Goals': [12, 8, 16, 3], 'Assists': [18, 24, 9, 14], 'Shots': [112, 96, 101, 82] } df = pd.DataFrame(data, columns=data.keys()) # 將DataFrame轉(zhuǎn)化為一個(gè)字典并且將它存儲(chǔ)到j(luò)son文件中 data_dict = df.to_dict(orient="records") with open('output.json', "w+") as f: json.dump(data_dict, f, indent=4) # 將DataFrame轉(zhuǎn)化為一個(gè)字典并且將它存儲(chǔ)到xml文件中 xml_data = dicttoxml(data_dict).decode() with open("output.xml", "w+") as f: f.write(xml_data)
JSON數(shù)據(jù)
JSON提供了一種干凈且易于閱讀的格式,因?yàn)樗S護(hù)了一個(gè)字典風(fēng)格的結(jié)構(gòu)。 就像CSV一樣,Python有一個(gè)內(nèi)置的json模塊,使讀寫變得超級(jí)容易! 從上面的例子可以看到當(dāng)我們讀取CSV時(shí),可以將數(shù)據(jù)以字典的形式存儲(chǔ),然后再將字典寫入文件。
import json import pandas as pd # 使用json模塊從json文件中讀取數(shù)據(jù) # 以字典形式存儲(chǔ) with open('data.json') as f: data_listofdict = json.load(f) # 也可以直接使用pandas直接讀取json文件 data_df = pd.read_json('data.json', orient='records') # 將字典數(shù)據(jù)保存為json文件 # 并使用 'indent' and 'sort_keys' 格式化json文件 with open('new_data.json', 'w+') as json_file: json.dump(data_listofdict, json_file, indent=4, sort_keys=True) # 也可以使用pandas將字典結(jié)構(gòu)的數(shù)據(jù)保存為json文件 export = data_df.to_json('new_data.json', orient='records')
正如我們之前看到的,我們可以通過pandas或者使用Python的內(nèi)置csv模塊輕松地將我們的數(shù)據(jù)存儲(chǔ)為CSV文件,而在轉(zhuǎn)化為成XML時(shí),我們使用的是 dicttoxml 庫。
import json import pandas as pd import csv # 從json文件中讀取數(shù)據(jù) # 數(shù)據(jù)存儲(chǔ)在一個(gè)字典列表中 with open('data.json') as f: data_listofdict = json.load(f) # 以列表中的字典寫入倒csv文件中 keys = data_listofdict[0].keys() with open('saved_data.csv', 'w') as output_file: dict_writer = csv.DictWriter(output_file, keys) dict_writer.writeheader() dict_writer.writerows(data_listofdict)
XML數(shù)據(jù)
XML有點(diǎn)不同于CSV和JSON。 通常,CSV和JSON由于其簡單性而被廣泛使用。 它們讀、寫和解釋起來既簡單又快捷,不需要額外的工作,而且解析JSON或CSV是非常輕量級(jí)的。
另一方面,XML往往數(shù)據(jù)量要大一些。 你如果正在發(fā)送更多的數(shù)據(jù),這意味著你需要更多的帶寬、更多的存儲(chǔ)空間和更多的運(yùn)行時(shí)間。 但是與JSON和CSV相比,XML確實(shí)具有一些額外的特性: 你可以使用名稱空間來構(gòu)建和共享標(biāo)準(zhǔn)結(jié)構(gòu)、更好的繼承表示,以及用XML schema、DTD等表示數(shù)據(jù)的行業(yè)標(biāo)準(zhǔn)化方法。
要讀取XML數(shù)據(jù),我們將使用Python內(nèi)置的XML模塊的子模塊ElementTree。 這里,我們可以使用 xmltodict 庫將ElementTree對(duì)象轉(zhuǎn)換為字典。 一旦有了字典,我們就可以像上面一樣將字典換轉(zhuǎn)換為CSV、JSON或pandas的 DataFrame !
import xml.etree.ElementTree as ET import xmltodict import json tree = ET.parse('output.xml') xml_data = tree.getroot() xmlstr = ET.tostring(xml_data, encoding='utf8', method='xml') data_dict = dict(xmltodict.parse(xmlstr)) print(data_dict) with open('new_data_2.json', 'w+') as json_file: json.dump(data_dict, json_file, indent=4, sort_keys=True)
關(guān)于“python如何讀寫csv xml json文件”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
文章標(biāo)題:python如何讀寫csvxmljson文件-創(chuàng)新互聯(lián)
標(biāo)題URL:http://jinyejixie.com/article14/dipege.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站策劃、定制開發(fā)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站收錄、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容