JSON(JavaScript Object Notation
, JS 對象標記) 是一種輕量級的數據交換格式。它基於 ECMAScript (w3c制定的js規範)的一個子集,採用徹底獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提高網絡傳輸效率。更多解釋請見:https://baike.baidu.com/item/JSON/2462549?fr=aladdinpython
多個數據之間使用逗號分開。
注意:json本質上就是一個字符串。編程
import json books = [ { 'title': '鋼鐵是怎樣練成的', 'price': 9.8 }, { 'title': '紅樓夢', 'price': 9.9 } ] json_str = json.dumps(books,ensure_ascii=False) print(json_str)
由於json
在dump
的時候,只能存放ascii
的字符,所以會將中文進行轉義,這時候咱們能夠使用ensure_ascii=False
關閉這個特性。
在Python
中。只有基本數據類型才能轉換成JSON
格式的字符串。也即:int
、float
、str
、list
、dict
、tuple
。json
dump
到文件中:json
模塊中除了dumps
函數,還有一個dump
函數,這個函數能夠傳入一個文件指針,直接將字符串dump
到文件中。示例代碼以下:數組
books = [ { 'title': '鋼鐵是怎樣練成的', 'price': 9.8 }, { 'title': '紅樓夢', 'price': 9.9 } ] with open('a.json','w') as fp: json.dump(books,fp)
json_str = '[{"title": "鋼鐵是怎樣練成的", "price": 9.8}, {"title": "紅樓夢", "price": 9.9}]' books = json.loads(json_str,encoding='utf-8') print(type(books)) print(books)
import json with open('a.json','r',encoding='utf-8') as fp: json_str = json.load(fp) print(json_str)
csv文件處理
讀取csv文件:
import csv網絡
with open('stock.csv','r') as fp:
reader = csv.reader(fp)
titles = next(reader)
for x in reader:
print(x)
這樣操做,之後獲取數據的時候,就要經過下表來獲取數據。若是想要在獲取數據的時候經過標題來獲取。那麼能夠使用DictReader。示例代碼以下:編程語言
import csv with open('stock.csv','r') as fp: reader = csv.reader(fp) titles = next(reader) for x in reader: print(x)
這樣操做,之後獲取數據的時候,就要經過下表來獲取數據。若是想要在獲取數據的時候經過標題來獲取。那麼能夠使用DictReader。示例代碼以下:函數
import csv with open('stock.csv','r') as fp: reader = csv.DictReader(fp) for x in reader: print(x['turnoverVol'])
寫入數據到csv文件,須要建立一個writer對象,主要用到兩個方法。一個是writerow,這個是寫入一行。一個是writerows,這個是寫入多行。示例代碼以下:ssr
import csv headers = ['name','age','classroom'] values = [ ('zhiliao',18,'111'), ('wena',20,'222'), ('bbc',21,'111') ] with open('test.csv','w',newline='') as fp: writer = csv.writer(fp) writer.writerow(headers) writer.writerows(values)
也能夠使用字典的方式把數據寫入進去。這時候就須要使用DictWriter了。示例代碼以下:指針
import csv headers = ['name','age','classroom'] values = [ {"name":'wenn',"age":20,"classroom":'222'}, {"name":'abc',"age":30,"classroom":'333'} ] with open('test.csv','w',newline='') as fp: writer = csv.DictWriter(fp,headers) writer = csv.writeheader() writer.writerow({'name':'zhiliao',"age":18,"classroom":'111'}) writer.writerows(values)
import csv # 經過下標讀取文件 # def read_csv_demo(): # with open('', 'r') as fp: # # reader是一個迭代器 # reader = csv.reader(fp) # # next 會對迭代器會從開始位置加一位 # next(reader) # for x in reader: # name = [3] # other = [-1] # print({'name': name, 'other': other}) # 經過字典讀取文件 # def read_csv_demo2(): # with open('', 'r') as fp: # # 使用DictReader建立的reader對象 # # 不會包含的那行數據 # reader = csv.DictReader(fp) # for x in reader: # value = {'name':x['name'],'other':x['other']} # print(value) # 經過寫入文件 def read_csv_demo3(): headers = ['username', 'age', 'height'] values = [ {'張三', '18', '156'}, {'李四', '19', '184'}, {'王五', '20', '168'} ] # newline 是寫入一行後作的事 with open('classroom.csv', 'w', encoding='utf-8', newline='') as fp: writer = csv.writer(fp) # 寫入表頭 writer.writerow(headers) # 寫入數據 writer.writerows(values) # 經過字典寫入文件 def read_csv_demo4(): headers = ['username', 'age', 'height'] values = [ {'username':'張三', 'age':18, 'height':156}, {'username':'李四', 'age':19, 'height':184}, {'username':'王五', 'age':20, 'height':168} ] # newline 是寫入一行後作的事 with open('classroom2.csv', 'w', encoding='utf-8', newline='') as fp: writer = csv.DictWriter(fp,headers) # 寫入表頭數據的時候,須要執行writeheader函數 writer.writeheader() writer.writerows(values) if __name__ == '__main__': read_csv_demo4()