Python 專題五 XML JSON解析

2021-06-18 20:15:13 字數 1008 閱讀 9956

xml.sax.* 模組 - 是 sax api 的實現。這個模組犧牲了便捷性來換取速度和記憶體占用。sax 是乙個基於事件的 api,這就意味著它可以「在空中」(on the fly)處理龐大數量的的文件,不用完全載入進記憶體(見注釋1)。

xml.parser.expat - 是乙個直接的,低階一點的基於 c 的 expat 的語法分析器(見注釋2)。 expat 介面基於事件反饋,有點像 sax 但又不太像,因為它的介面並不是完全規範於 expat 庫的。

最後,我們來看看 xml.etree.elementtree (以下簡稱 et)。它提供了輕量級的 python 式的 api ,它由乙個 c 實現來提供。相對於 dom 來說,et 快了很多(見注釋3)而且有很多令人愉悅的 api 可以使用。相對於 sax 來說,et 也有 et.iterparse 提供了 「在空中」 的處理方式,沒有必要載入整個文件到記憶體。et 的效能的平均值和 sax 差不多,但是 api 的效率更高一點而且使用起來很方便。我一會兒會給你們看演示。

我的建議 是盡可能的使用 et 來處理 xml ,除非你有什麼非常特別的需要

elementtree 生來就是為了處理 xml ,它在 python 標準庫中有兩種實現。一種是純 python 實現例如 xml.etree.elementtree ,另外一種是速度快一點的 xml.etree.celementtree 。

你要記住: 盡量使用 c 語言實現的那種,因為它速度更快,而且消耗的記憶體更少。如果你的電腦上沒有 _elementtree (見注釋4) 那麼你需要這樣做:

try:

import xml.etree.celementtree as et

except importerror:

import xml.etree.elementtree as et

import json

myjson=json.load(file("target.json")

print myjson

Java物件導向專題(五)

修飾符內部類 區域性內部類 匿名內部類 其實就是資料夾 舉例 方案1 按功能分 方案2 按模組分 package 包名 多級分包用 分開 乙個檔案中,下列語句包含的數量 package 只能有乙個 import 可以有多個 class 可以有多個,但建議乙個 本類同乙個包下 子類和無關類 不同包下 ...

python專題 python基礎

這個就基礎了,變數和常量的主要最為本質的原因是記憶體中,該塊記憶體的讀寫許可權,常量是不可以被重新賦值的,變數是可以被重新賦值。換句話說,變數的記憶體是可以被讀寫的,而常量的記憶體許可權僅僅是唯讀。python中的識別符號和其他語言都基本一樣,只能由字母,數字,下劃線組成,數字不能開頭!python...

Python專題講解

python中的切片表示法 使用python實現乙個迴圈輸入 在python中複製乙個列表list 理解python的引數傳遞 理解python雙星和單星對引數的作用 理解python中的作用域規則 python中yield關鍵字的作用 在python中呼叫外部命令 if name main 的作用...