使用json庫
json 是一種輕量級的文字資料交換格式。與 xml 相比,擁有更小、更快、更易解析的特點。其結構和 python 的list、dict有點相似。
資料表示
json 中資料都以名稱:值的形式表示,名稱包括在一對雙引號" "
中,值則有多種形式,多條資料之間用逗號,
隔開。這種表示方式與 python 的dict類似。
資料型別
json 的值可以是如下型別: 物件
json 的物件用一對大括號{}
表示,類似於dict,物件可以擁有多個名稱/值 對,名稱/值 對用逗號,
隔開。
json
庫是 python 內建的乙個用於操作 json 資料的庫,提供了幾個函式用於解析與生成json 格式的資料。
解析 json 資料
json
庫提供了乙個函式loads
,用於從 python 的字串中解析 json 資料。使用它的方法很簡單,只需將含有 json 資料的字串當做引數傳遞給它,它的返回值就是由 python 中的基礎資料型別組成的物件。
import json
data ='';
text = json.loads(data)
print
(text)
得到的結果是:
json 的物件型別轉換成了 python 的dict型別。
json 各種資料型別在解析後,對應的 python 基礎資料型別如下表:
json
python
object(物件)
dict
array(陣列)
list
string(字串)
unicode
number (int)
int, long
number (real)
float
true
true
false
false
null
none
json 資料型別轉化成 python 資料型別後,就可以按照 python 的方式來使用了。
如果需要以不同的字元編碼來解析,可以指定 encoding引數,比如:
import json
data ='';
text = json.loads(data,encoding =
"utf-8"
)print
(text)
上面的**以utf-8的字元編碼,解析data字串的資料。
注意:如果字元編碼指定錯誤,有可能會導致解析失敗,引發異常。
json庫的另乙個函式load也是用於解析 json 資料的,它與loads函式唯一不同的地方在於,它是從檔案中解析,比如:
import json
data =
open
("test.txt"
,"r"
,encoding =
"utf-8"
)text = json.load(data)
#將檔案物件傳遞給load函式
print
(text)
fp.close(
)
這樣test.txt檔案內的內容,就會被當做 json 格式的資料來解析。
注意:load函式沒有可選引數encoding,只要檔案物件使用了正確的字元編碼開啟檔案,load函式就可以正確的解析資料。
生成 json 資料
與解析的那兩個函式相對應,json庫也提供了兩個函式:dumps和dump,來將由 python 基礎資料型別組成的物件轉化成 json 資料,使用方法也類似:
import json
data =
json = json.dumps(data)
#轉化成json格式的字串
print
(json)
得到的結果是:
[
]
注意:這是乙個字串。
同樣,在轉化的時候,也有乙個 python 基礎資料型別到 json 資料型別的對應**:
python
json
dict
object
list, tuple
array
str, unicode
string
int, long, float
number
true
true
false
false
none
null
注意:dumps沒有可選引數encoding,當要轉化的物件含有中文等非 ascii 字元時,需指定可選引數ensure_ascii為false。否則非 ascii 的字元將會被顯示成\u***x的形式:
data =
print
(json.dumps(data)
)#ensure_ascii預設值為true
print
(json.dumps(data,ensure_ascii=
false))
#指定ensure_ascii為false
上面的**的結果:
使用dump函式直接輸出到檔案也很簡單,只需多傳遞乙個檔案物件作為引數。
import json
fp =
open
("test.txt"
,"w"
)data =
json.dump(data,fp)
#轉化成json格式的字串後輸出到檔案
fp.close(
)
test.txt檔案的內容:
[
]
Python高階學習筆記之XML
使用sax庫解析xml 使用elementtree解析xml xml 全稱可擴充套件標記語言,是一種用於標記電子檔案使其具有結構性的標記語言,可以用來標記資料 定義資料型別。xml 的宣告 xml 文件的宣告是可選的,如果要宣告,需要將其放在文件的第一行最頂端。1.0 encoding utf 8 ...
JS高階程式設計學習筆記之JS事件(1)
事件流 冒泡定義 事件開始時由最具體的元素接收,然後逐級上傳到較為不具體的節點。ie9 ff chrome safari會將事件一直冒泡到window物件。ie5.5及其以下會跳過元素,直接從body跳到document 若發生事件的節點元素並沒有繫結該事件,則這個動作會向上冒泡,直到被執行,一直冒...
JS高階程式設計學習筆記之RegExp型別
建立正規表示式 字面量形式定義正規表示式 var expression pattern flags pattern部分可以使任意簡單或複雜的正規表示式。每個正規表示式可以帶有乙個或多個標誌。標誌為 g,表示全域性模式。i,表示不區分大小寫。m,表示多行模式 正規表示式的元字元包括 注意 模式中使用的...