亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python將字典轉(zhuǎn)換為XML的方法

瀏覽:34日期:2022-07-15 14:16:33

問(wèn)題

你想使用一個(gè)Python字典存儲(chǔ)數(shù)據(jù),并將它轉(zhuǎn)換成XML格式。

解決方案

盡管 xml.etree.ElementTree 庫(kù)通常用來(lái)做解析工作,其實(shí)它也可以創(chuàng)建XML文檔。 例如,考慮如下這個(gè)函數(shù):

from xml.etree.ElementTree import Elementdef dict_to_xml(tag, d):’’’Turn a simple dict of key/value pairs into XML’’’elem = Element(tag)for key, val in d.items(): child = Element(key) child.text = str(val) elem.append(child)return elem

下面是一個(gè)使用例子:

>>> s = { ’name’: ’GOOG’, ’shares’: 100, ’price’:490.1 }>>> e = dict_to_xml(’stock’, s)>>> e<Element ’stock’ at 0x1004b64c8>>>>

轉(zhuǎn)換結(jié)果是一個(gè) Element 實(shí)例。對(duì)于I/O操作,使用 xml.etree.ElementTree 中的 tostring() 函數(shù)很容易就能將它轉(zhuǎn)換成一個(gè)字節(jié)字符串。例如:

>>> from xml.etree.ElementTree import tostring>>> tostring(e)b’<stock><price>490.1</price><shares>100</shares><name>GOOG</name></stock>’>>>

如果你想給某個(gè)元素添加屬性值,可以使用 set() 方法:

>>> e.set(’_id’,’1234’)>>> tostring(e)b’<stock _id='1234'><price>490.1</price><shares>100</shares><name>GOOG</name></stock>’>>>

如果你還想保持元素的順序,可以考慮構(gòu)造一個(gè) OrderedDict 來(lái)代替一個(gè)普通的字典。請(qǐng)參考1.7小節(jié)。

討論

當(dāng)創(chuàng)建XML的時(shí)候,你被限制只能構(gòu)造字符串類型的值。例如:

def dict_to_xml_str(tag, d): ’’’ Turn a simple dict of key/value pairs into XML ’’’ parts = [’<{}>’.format(tag)] for key, val in d.items(): parts.append(’<{0}>{1}</{0}>’.format(key,val)) parts.append(’</{}>’.format(tag)) return ’’.join(parts)

問(wèn)題是如果你手動(dòng)的去構(gòu)造的時(shí)候可能會(huì)碰到一些麻煩。例如,當(dāng)字典的值中包含一些特殊字符的時(shí)候會(huì)怎樣呢?

>>> d = { ’name’ : ’<spam>’ }>>> # String creation>>> dict_to_xml_str(’item’,d)’<item><name><spam></name></item>’>>> # Proper XML creation>>> e = dict_to_xml(’item’,d)>>> tostring(e)b’<item><name>&lt;spam&gt;</name></item>’>>>

注意到程序的后面那個(gè)例子中,字符 ‘<’ 和 ‘>’ 被替換成了 &lt; 和 &gt;

下面僅供參考,如果你需要手動(dòng)去轉(zhuǎn)換這些字符, 可以使用 xml.sax.saxutils 中的 escape() 和 unescape() 函數(shù)。例如:

>>> from xml.sax.saxutils import escape, unescape>>> escape(’<spam>’)’&lt;spam&gt;’>>> unescape(_)’<spam>’>>>

除了能創(chuàng)建正確的輸出外,還有另外一個(gè)原因推薦你創(chuàng)建 Element 實(shí)例而不是字符串, 那就是使用字符串組合構(gòu)造一個(gè)更大的文檔并不是那么容易。 而 Element 實(shí)例可以不用考慮解析XML文本的情況下通過(guò)多種方式被處理。 也就是說(shuō),你可以在一個(gè)高級(jí)數(shù)據(jù)結(jié)構(gòu)上完成你所有的操作,并在最后以字符串的形式將其輸出。

以上就是Python將字典轉(zhuǎn)換為XML的方法的詳細(xì)內(nèi)容,更多關(guān)于Python將字典轉(zhuǎn)換為XML的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 操操操综合 | 亚洲国产乱码在线精品 | 中文日韩 | 久久中文亚洲国产 | 日韩欧美综合在线二区三区 | 成人中文字幕在线高清 | 国产素人在线观看 | 九九视频只有精品六 | 狠狠色丁香婷婷久久综合考虑 | 我要综合色 | 亚洲综合极品香蕉久久网 | 日韩第一页在线观看 | 九九精品视频一区在线 | 国产日韩欧美一区二区三区在线 | 精品国产免费久久久久久婷婷 | 久久美女 | 久草在线精品视频 | 免费大片黄在线观看日本 | 亚洲在线免费免费观看视频 | 在线看黄色片 | 国产欧美日韩精品综合 | 日本一级爽毛片在线看 | 欧美伦理一区二区三区 | 色综合综合在线 | 91丝瓜视频最新版 | 国产一区二区三区在线电影 | 欧美特欧美特级一片 | 成人一区视频 | 欧美另类videosbestsex久久 | 日本精品久久久中文字幕 | 91久久国产成人免费观看资源 | 大胆国模一区二区三区伊人 | 尤物视频www| 爽爽爽爽爽爽a成人免费视频 | 久久超级碰 | 98香蕉草草视频在线精品看 | 国产三级精品三级在线专区91 | 国产乱仑| 日韩欧美一区二区精品久久 | 精品久久综合一区二区 | 国产又色又爽黄的网站免费 |