Python高階學習筆記之JSON

2021-10-03 12:01:57 字數 3062 閱讀 8376

使用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,表示多行模式 正規表示式的元字元包括 注意 模式中使用的...