1. json文件處理 1.1 什麼是json JSON(JavaScript Object Notation,JS對象簡譜)是一種輕量級的數據交換格式。它基於ECMAScript(歐洲電腦協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得J ...
1. json文件處理
1.1 什麼是json
JSON(JavaScript Object Notation,JS對象簡譜)是一種輕量級的數據交換格式。它基於ECMAScript(歐洲電腦協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得JSON成為理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。
1.2 json支持數據格式
1.對象(字典)。使用花括弧。
2.數組(列表)。使用方括弧。
3.整型、浮點型、布爾類型和null類型。
4.字元串類型(字元串必須要用雙引號,不能用單引號)。
多個數據之間使用逗號分開。
註意:json本質上就是一個字元串。
1.3 字典和列表轉json
import json books = [ { "title":"壞蛋是怎樣煉成的1","price":9.8 }, { "title":"壞蛋是怎樣煉成的2","price":9.9 } ] json_str = json.dumps(books,ensure_ascii=False) print(json_str) print(type(books)) print(type(json_str))
因為json在dump的時候,只能觸發ascii的字元,因此會將中文進行轉義,這時候我們可以使用ensure_ascii=False關閉這個特性。
在python中,只有基本數據類型才能轉換成json格式的字元串。即:int、float、str、list、dict、tuple。
將json數據直接dump到文件中:
json模塊中處理dumps函數,還有一個dump函數,這個函數可以傳入一個文件指針,直接將字元串dump到文件中。
import json books = [ { "title":"壞蛋是怎樣煉成的1","price":9.8 }, { "title":"壞蛋是怎樣煉成的2","price":9.9 } ] with open('a.json','w',encoding='utf-8') as fp: json.dump(books,fp,ensure_ascii=False)
dump和dumps的區別:
dump()不需要使用write()方法,只需要寫哪個字典、哪個文件即可;而.dumps()需要使用write()方法寫入
如果要把字典寫到文件裡面的時候,dump()好用;但如果不需要操作文件,或需要把內容存到資料庫和Excel,則需要使用dumps()先把字典轉成字元串,再寫入。
1.4 將一個json字元串load成python對象
#encoding: utf-8 import json json_str = '[{"title": "壞蛋是怎樣煉成的1", "price": 9.8}, {"title": "壞蛋是怎樣煉成的2", "price": 9.9}]' books = json.loads(json_str) print(type(books)) for book in books: print(book)
直接從文件中讀取json:
#encoding: utf-8 import json with open('a.json','r',encoding='utf-8') as fp: books = json.load(fp) for book in books: print(book)
load與loads的區別:
loads()傳的是字元串,而load()傳的是文件對象
使用loads()時需要先讀文件再使用,而load()則不用
2. CSV文件處理
CSV是一種通用的、相對簡單的文件格式,被用戶、商業和科學廣泛應用。最廣泛的應用是在程式之間轉移表格數據,而這些程式本身是在不相容的格式上進行操作的(往往是私有的和/或無規範的格式)。因為大量程式都支持某種CSV變體,至少是作為一種可選擇的輸入/輸出格式。
2.1 讀取csv文件
csv數據:
csv文件不能直接創建,只能由excel文件另存為csv格式。
import csv with open('Demo.csv','r') as fp: reader = csv.reader(fp) titles = next(reader) for x in reader: print(x)
為什麼讀取不到第一行呢?
因為第一行一般都是存放標題等信息。
這樣操作,以後獲取數據的時候,就要通過上面的方法來獲取數據。 如果想要在獲取數據的時候通過標題來獲取,那麼可以用DictReader。
import csv with open('Demo.csv','r') as fp: reader = csv.DictReader(fp) for x in reader: print(x)
我們可以通過標題來選中返回的數據:
import csv with open('Demo.csv','r') as fp: reader = csv.DictReader(fp) for x in reader: print(x['數據1'])
2.2 寫入數據到csv文件
寫入數據到csv文件,需要插件一個writer對象,主要用到兩個方法。一個是writerow,這個是寫入一行。一個是writerows,這個是寫入多行。
import csv headers = {'name','age','height'} values = { ('張三',18,170), ('李四',20,175), ('王五',21,180) } with open('test.csv','w',encoding='utf-8') as fp: writer = csv.writer(fp) writer.writerow(headers) writer.writerows(values)
也可以使用字典的方式把數據寫入。這時候就需要使用DictWriter了。
import csv headers = ['name','age','height'] values = [ {'name':'張三','age':18,'height':170}, {'name':'李四','age':20,'height':175}, {'name':'王五','age':21,'height':180} ] with open('test.csv','w',encoding='utf-8') as fp: writer = csv.DictWriter(fp,headers) writer.writeheader() writer.writerows(values)