json概念及支持的數據格式
JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率。
支持字典、列表(使用花括號)、整形、浮點型、布爾類型、null。字符串類型,字符串必須使用雙引號,不能用單引號。json本質上就是一個字符串。在Python中。只有基本數據類型才能轉換成JSON格式的字符串。也即:int、float、str、list、dict、tuple。
字典和列表與json的轉換
dumps:將字典和列表,直接轉換爲json。
dump:將數據直接dump到文件中。
import json
info = [
{
'name':'coffee',
'age':18
},
{
'name': '張山',
'age': 20
}
]
#因爲json在dump的時候,只能存放ascii的字符,因此會將中文進行轉義,這時候我們可以使用ensure_ascii=False關閉這個特性。
json_str = json.dumps(info,ensure_ascii=False)
print(json_str,type(json_str))
with open('info.json','w',encoding='utf-8') as fp:
json.dump(info,fp,ensure_ascii=False)
loads:將一個json字符串解析成python對象
load:直接從文件中讀取json。
import json
info_json = '[{"name": "coffee", "age": 18}, {"name": "張山", "age": 20}]'
info = json.loads(info_json,encoding='utf-8')
print(info,type(info))
with open('info.json','r',encoding='utf-8') as fp:
info_file = json.load(fp)
print(info_file,type(info_file))
什麼是CSV
逗號分隔值(Comma-Separated Values,CSV,有時也稱爲字符分隔值,因爲分隔字符也可以不是逗號),其文件以純文本形式存儲表格數據(數字和文本)。純文本意味着該文件是一個字符序列,不含必須像二進制數字那樣被解讀的數據。CSV文件由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或製表符。通常,所有記錄都有完全相同的字段序列。通常都是純文本文件。建議使用WORDPAD或是記事本來開啓,再則先另存新檔後用EXCEL開啓,也是方法之一。
規則:
1 開頭是不留空,以行爲單位。
2 可含或不含列名,含列名則居文件第一行。
3 一行數據不跨行,無空行。
4 以半角逗號(即,)作分隔符,列爲空也要表達其存在。
5列內容如存在半角引號(即"),替換成半角雙引號("")轉義,即用半角引號(即"")將該字段值包含起來。
6文件讀寫時引號,逗號操作規則互逆。
7內碼格式不限,可爲 ASCII、Unicode 或者其他。
8不支持數字
9不支持特殊字符
寫入數據到CSV文件:
寫入數據到csv文件,需要創建一個writer對象,主要用到兩個方法。一個是writerow,這個是寫入一行。一個是writerows,這個是寫入多行。
import csv
headers = ['name','age','sex']
values = [
('coffee',18,'男'),
('floating',20,'女'),
('k',33,'男')
]
with open('info.csv','w',newline='') as fp:
writer = csv.writer(fp)
writer.writerow(headers)
writer.writerows(values)
DictWriter:使用自字典的方式把數據寫入CSV文件中。
import csv
headers = ['name','age','sex']
values = [
{"name":'coffee',"age":18,"sex":"男"},
{"name":'floating',"age":20,"sex":"女"}
]
with open('info.csv','w',newline='') as fp:
writer = csv.DictWriter(fp,headers)
writer.writeheader()
writer.writerows(values)
writer.writerow({"name":'k',"age":33,"sex":"男"})
讀取CSV文件
使用reader,返回一個生成器。
import csv
with open('info.csv','r') as fp:
reader = csv.reader(fp)
title = next(reader)
print(title)
for x in reader:
print(x)
print(x[0])
這樣操作,以後獲取數據的時候,就要通過下表來獲取數據。如果想要在獲取數據的時候通過標題來獲取。那麼可以使用DictReader。
import csv
with open('info.csv','r') as fp:
reader = csv.DictReader(fp)
for x in reader:
print(x)
print(x['name'])