python xml 用什麼模塊

據我所知 沒有一步到位的方法。
你可以自己寫一個, 讀json然後轉成xml, 讀xml轉json

❷ 如何在命令行中列印格式化的json和xml數據

如何在命令行中列印格式化的json和xml數據

  • 雖然現在JSON以其輕量級,易解析等諸多優點大行其道,但也有一些系統的API返回的數據是XML格式的,python沒有現成的mole像格式化json一樣格式化xml。

  • 當然,你可以用lxml自己寫一個,這也很簡單。

  • (如果你真的寫了,那也請你不吝分享出來…LOL)。雖然沒有現成的python mole,但是有現成的工具,那就是xmllint。

  • 關於xmllint的介紹自己看doc就是了,他是libxml2的一部分,所以在大多數的*nix系統上都是默認自帶的。用起來也很簡單

❸ json數據格式和xml數據格式的區別和用法是什麼

JSON與XML的區別:

1 、可讀性。JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規范的標簽形式,很難分出勝負。

2、可擴展性。XML天生有很好的擴展性,JSON當然也有,沒有什麼是XML能擴展,JSON不能的。不過JSON在javascript主場作戰,可以存儲Javascript復合對象,有著xml不可比擬的優勢。

3、編碼難度。XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有提供的工具。無工具的情況下,相信熟練的開發人員一樣能很快的寫出想要的xml文檔和JSON字元串,不過,xml文檔要多很多結構上的字元。

用法:JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。易於人閱讀和編寫,同時也易於機器解析和生成。XML可以做為一個公共的標准格式為不同格式之間提供統一介面。

❹ python 配置文件 json xml 哪個好

當要面對不確定的數據交換需求的時候才考慮使用XML,因為將來誰用誰解析,和我沒有關系專。
而且XML就是一屬個大坑,各種異常,各種編碼,各種過濾都要考慮,稍有疏忽就掉下去爬不上來。

Json這個東西也不是個好玩意,雖然各種解析庫都有,但是對於我們最求更短更快的程序員而言,不是通過HTTP傳輸數據的時候是絕對不會考慮使用Json這個大爺的。

如果只是一個配置參數的集合你就直接簡單的用文本文件存就可以了,你還可以加密,你還可以搞得最後自己也看不懂。

❺ 用python怎麼實現json和xml的互轉

直接轉換的包是沒有的。但python都有相關的處理json和xml的模塊:
python <->json 推薦用simplejson或json;
python <->xml 推薦使用 ElementTree, python2.5已自帶。
所以,你可以嘗試做xml->python的,再利用simplejson的python->json的,就可以xml->json了(反之亦然)
不過要注意幾點:
(1)再jsonify python object之前,需要先把python object unicode化,反正要注意編碼問題就是了。
(2)xml->python,或者說xml->json有很多種conversion,常見的比如 tuple tree,JsonML, javascript-like JSON (Parker convention), XML-like JSON (see the BadgerFish convention). 各有優缺點,看你怎麼選擇啦。
(3)有一些現成的通過xslt把xml直接轉成json的。

❻ 如何使用python解析超大XML文檔

在工作時最有吸引力的地方在於可以盡量避免使用昔日的技術。主機、租用線路、COBOL語言......沒有人應該要處理這些東西了,對不對?不幸的是,你最終會與現實發生沖突,即使是2014年,大家都知道JSON是最好的方式,你的票務供應商(你無法控制的)會告訴你,只有使用XML導出才能讓大容量的數據輸出他們的系統。
唉~~~~,好,很好,無所謂。這只是一次性的事情,我不需要照顧和養活這個XML,我只需要解析它並將數據保存到Postgres中,我們就可以利用它。不應該太困難,我需要寫一點python腳本…
import xml.etree.cElementTree as ET
tree = ET.parse('huge.xml')
for ticket_node in tree.findall('ticket'):
#etc...
......這將工作的非常好,如果我們談論的是一個幾MB的XML文檔,但是如果遇到的是huge.xml它是1.3GB的巨大文檔,這種方法只會融化你的筆記本電腦(以16GB的MacBookPro,一旦python的過程花了超過約3GB的內存,系統變得幾乎完全反應遲鈍,並且它幾乎還沒有完成)。回到原點。
首先讓我們快速瀏覽一下我們的數據。
<?xml version="1.0" encoding="UTF-8"?>
<tickets report_date="20140217">
<ticket>
<!-- various ticket fields, some of which I want -->
<comments type="array">
<comment>
<!-- various comment fields, some of which I want -->
</comment>
<!-- possibly more comment tags -->
</comments>
</ticket>
<!-- many, many ticket tags -->
</tickets>
不是很復雜,作為一個整體它不是一個真正的文件中,<ticket>節點只是一個列表,每一類又是一個小文件,我想挑出幾部分出來。我不需要做針對樹的任何復雜的遍歷,只是希望從每個<ticket>節點獲得一些數據然後把它扔掉再讀下一個。原來ElementTree的對眼前這個場景提供了一個工具:iterparse()。讓我們再試一次:
import xml.etree.cElementTree as ET
for event, element in ET.iterparse('huge.xml'):
if event == 'end' and element.tag == 'ticket':
#process ticket...
…什麼? !我的筆記本電腦又融化了!跟parse-the-whole-file的方法一樣使用了完全相同的內存(和系統響應能力)。到底發生了什麼事?
好吧,稍微google了一下,google告訴我,當iterparse()讀取元素時,它仍然是在內存中建立了一個完整的文檔樹,就像我一開始使用parse()方法一樣。幾個博客和stackoverflow的答案推薦添加element.clear()方法在循環結束時清理你不需要的對象,可以限制內存消耗。我拯救了你的麻煩:它不工作。其他博客,so的答案,甚至一個IBM白皮書表明需要在循環結束時進行更徹底的清掃工作結束:
import lxml.etree as ET #the IBM piece used lxml but I tried cElementTree also
for event, element in ET.iterparse('huge.xml'):
if event == 'end' and element.tag == 'ticket':
#process ticket...
element.clear()
while elem.getprevious() is not None:
del elem.getparent()[0]
......哎呀!我溶化了另一台筆記本電腦!
為什麼不工作?坦率地說,我不知道。
我稍微離題一下來說說為什麼我愛Python。作為一個DBA和系統工程師,我面對著大量的一次性編程挑戰。移動這個從這里到那裡、Munge數據、將數據從這里遷移到哪裡。這種類型的挑戰是非常適合於蠻力編程解決問題的這種方式。總之,有時是不值得在建立一個優雅的、易於維護的解決方案上花費任何時間。有時候,你只需要解決這個問題,然後忘掉它。 在處理這類問題上Python最棒的,簡潔的語法、良好的設計理念、豐富的庫都有助於這個工具,很容易快速解決您碰到的任何問題。即使速度比同等的Java解決方案的10倍還慢,如果需要5分鍾的時間寫而不是5小時,我更願意使用python,因為人類工時比CPU工時更有價值。
所有這一切都證明下述方式解決了我的問題,而不會融化的筆記本電腦:
import xml.etree.cElementTree as ET
def process_buffer(buf):
tnode = ET.fromstring(buf)
#pull it apart and stick it in the database
inputbuffer = ''
with open('huge.xml','rb') as inputfile:
append = False
for line in inputfile:
if '<ticket>' in line:
inputbuffer = line
append = True
elif '</ticket>' in line:
inputbuffer += line
append = False
process_buffer(inputbuffer)
inputbuffer = None
del inputbuffer #probably rendant...
elif append:
inputbuffer += line
不是最優雅,或有效率,或者通用的解決方案,但它可以工作。剛剛看了手邊的手冊,利用其結構的簡單性,在解析之前根據xml文件的內容將它切成可管理的塊,然後解析和處理每個塊,終於可以確保不再需要更長的時間來把它全部處理完。

❼ python中為什麼用json有什麼作用

今天我也在這個問題上糾結很久。最後才想明白,我來回答下。

網上很多網友總結了json模塊的用法,但沒說json模塊有什麼用,幹嘛要有這個模塊。可能都明白、太簡單,覺得沒必要說。但作為小白的我不明白,而且在練習使用load()和mp()時遇到錯誤。

首先糾正,json格式不是字元串。json與python裡面的字典是一樣的格式。

python的json模塊四個方法的作用為:

mps()#把數據轉成字元串;
loads()#把字元串符號『』去掉;
mp(x,f)#將x的內容直接寫入f,不改變格式;
load(x,f)#讀取f保存為x,同樣不改變格式。

重點來了,f = open()下的read()的方法,輸出是字元串,wirte()方法的輸入也必須是字元串。

結論:因為f=open()下的讀寫方法都必須是字元串,很不方便。而非字元串的數據大多是json格式,所以就有了json模塊。方便讀寫非字元串的數據。

因為這個目的,json模塊的loads()和mps()方法有些雞肋,還造成困擾,因為明明json不是字元串,幹嘛要轉成字元串,另外mp()和load()方法表面上和它們不一樣。只有明白json模塊的目的,才會搞明白。

在python 3.6的說明文檔中,把json模塊放在了《7.2.文件讀寫》部分。我也是看到這里才去練習json模塊。但出問題,有些糊塗,明白json模塊的作用後,才更清楚幹嘛把json模塊放這里。

小白的淺見,若錯誤請指教,謝謝。