最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中XML轉(zhuǎn)JSON、XML轉(zhuǎn)字典代碼示例

 更新時(shí)間:2024年02月27日 11:52:40   作者:張無忌打怪獸  
大家都知道python的字典和json類似,那么可不可以先將xml轉(zhuǎn)換成json再去做其他的事情呢,下面這篇文章主要給大家介紹了關(guān)于Python中XML轉(zhuǎn)JSON、XML轉(zhuǎn)字典的相關(guān)資料,需要的朋友可以參考下

前言

今天我們將學(xué)習(xí)如何在 Python 中將 XML 轉(zhuǎn)換為 JSON 和 XML 轉(zhuǎn)換為字典。我們可以使用 Python 的 xmltodict 模塊來讀取 XML 文件并將其轉(zhuǎn)換為字典或 JSON 數(shù)據(jù)。我們還可以在大型 XML 文件上進(jìn)行流式處理,并將其轉(zhuǎn)換為字典。在進(jìn)入編碼部分之前,讓我們首先了解為什么需要進(jìn)行 XML 轉(zhuǎn)換。

將 XML 轉(zhuǎn)換為字典/JSON

XML 文件已經(jīng)逐漸過時(shí),但在網(wǎng)絡(luò)上仍然有許多大型系統(tǒng)在使用這種格式。XML 比 JSON 更重,因此大多數(shù)開發(fā)人員更喜歡在其應(yīng)用程序中使用后者。當(dāng)應(yīng)用程序需要理解任何來源提供的 XML 時(shí),將其轉(zhuǎn)換為 JSON 可能是一項(xiàng)繁瑣的任務(wù)。Python 中的 xmltodict 模塊使這項(xiàng)任務(wù)變得非常簡(jiǎn)單和直觀。

開始使用 xmltodict

我們可以開始使用 xmltodict 模塊,但首先需要安裝它。我們將主要使用 pip 來進(jìn)行安裝。

安裝 xmltodict 模塊

以下是我們?nèi)绾问褂?Python 包索引(pip)安裝 xmltodict 模塊:

pip install xmltodict

由于 xmltodict 是一個(gè)非常輕量級(jí)的模塊,因此安裝速度會(huì)很快。這是此安裝的輸出:!python install xmltodict module 最好的一點(diǎn)是,該模塊不依賴于任何其他外部模塊,因此它是輕量級(jí)的,并且避免了任何版本沖突。僅供演示,在基于 Debian 的系統(tǒng)上,可以使用 apt 工具輕松安裝此模塊:

sudo apt install python-xmltodict

另一個(gè)優(yōu)點(diǎn)是該模塊有一個(gè)官方的 Debian 軟件包。

Python XML 轉(zhuǎn)換為 JSON

嘗試此模塊的最佳方法是執(zhí)行其最初設(shè)計(jì)的操作之一,即執(zhí)行 XML 到 JSON 的轉(zhuǎn)換。讓我們看一下如何完成此操作的代碼片段:

import xmltodict
import pprint
import json

my_xml = """
    <audience>
      <id what="attribute">123</id>
      <name>Shubham</name>
    </audience>
"""

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(json.dumps(xmltodict.parse(my_xml)))

讓我們看一下此程序的輸出:!python xml to json 在這里,我們只需使用 parse(...) 函數(shù)將 XML 數(shù)據(jù)轉(zhuǎn)換為 JSON,然后我們使用 json 模塊以更好的格式打印 JSON。

將 XML 文件轉(zhuǎn)換為 JSON

將 XML 數(shù)據(jù)直接放在代碼中既不總是可能的,也不現(xiàn)實(shí)。通常,我們將數(shù)據(jù)保存在數(shù)據(jù)庫或某些文件中。我們也可以直接選擇文件并將其轉(zhuǎn)換為 JSON。讓我們看一下如何使用 XML 文件執(zhí)行轉(zhuǎn)換的代碼片段:

import xmltodict
import pprint
import json

with open('person.xml') as fd:
    doc = xmltodict.parse(fd.read())

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(json.dumps(doc))

讓我們看一下此程序的輸出:!python xml file to json 在這里,我們使用另一個(gè)模塊 pprint 以格式化的方式打印輸出。除此之外,使用 open(...) 函數(shù)非常直觀,我們使用它來獲取文件描述符,然后將文件解析為 JSON 對(duì)象。

Python XML 轉(zhuǎn)換為字典

正如模塊名稱本身所暗示的那樣,xmltodict 實(shí)際上將我們提供的 XML 數(shù)據(jù)轉(zhuǎn)換為一個(gè)簡(jiǎn)單的 Python 字典。因此,我們也可以簡(jiǎn)單地使用字典鍵訪問數(shù)據(jù)。以下是一個(gè)示例程序:

import xmltodict
import pprint
import json

my_xml = """
    <audience>
      <id what="attribute">123</id>
      <name>Shubham</name>
    </audience>
"""
my_dict = xmltodict.parse(my_xml)
print(my_dict['audience']['id'])
print(my_dict['audience']['id']['@what'])

讓我們看一下此程序的輸出:!python xml to dict 因此,標(biāo)簽可以作為鍵使用,同時(shí)屬性鍵也可以使用 @ 符號(hào)作為前綴。

支持 XML 中的命名空間

在 XML 數(shù)據(jù)中,通常有一組命名空間,用于定義 XML 文件提供的數(shù)據(jù)范圍。在轉(zhuǎn)換為 JSON 格式時(shí),有必要讓這些命名空間在 JSON 格式中保持不變。讓我們考慮這個(gè)示例 XML 文件:

<root xmlns="https://defaultns.com/"
        xmlns:a="https://a.com/">
    <audience>
        <id what="attribute">123</id>
        <name>Shubham</name>
    </audience>
</root>

以下是一個(gè)示例程序,演示了如何在 JSON 格式中包含 XML 命名空間:

import xmltodict
import pprint
import json

with open('person.xml') as fd:
    doc = xmltodict.parse(fd.read(), process_namespaces=True)

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(json.dumps(doc))

讓我們看一下此程序的輸出:!xml namespace to dict and json

JSON 轉(zhuǎn) XML 轉(zhuǎn)換

盡管將 XML 轉(zhuǎn)換為 JSON 是該模塊的主要目標(biāo),但 xmltodict 也支持執(zhí)行相反的操作,將 JSON 轉(zhuǎn)換為 XML 格式。我們將在程序中提供 JSON 數(shù)據(jù)。以下是一個(gè)示例程序:

import xmltodict

student = {
  "data" : {
    "name" : "Shubham",
    "marks" : {
      "math" : 92,
      "english" : 99
    },
    "id" : "s387hs3"
  }
}

print(xmltodict.unparse(student, pretty=True))

讓我們看看這個(gè)程序的輸出:!python json to xml 請(qǐng)注意,為了使其正常工作,必須提供單個(gè) JSON 鍵。如果我們考慮修改我們的程序,使其在數(shù)據(jù)的第一級(jí)包含多個(gè) JSON 鍵,如下所示:

import xmltodict

student = {
    "name" : "Shubham",
    "marks" : {
        "math" : 92,
        "english" : 99
    },
    "id" : "s387hs3"
}

print(xmltodict.unparse(student, pretty=True))

在這種情況下,我們?cè)诟?jí)別有三個(gè)鍵。如果我們嘗試對(duì)這種形式的 JSON 進(jìn)行解析,將會(huì)遇到以下錯(cuò)誤:!python json to xml unparse error。這是因?yàn)?xmltodict 需要使用第一個(gè)鍵構(gòu)造 XML,作為根 XML 標(biāo)簽。這意味著在數(shù)據(jù)的根級(jí)別只能有一個(gè) JSON 鍵。

結(jié)論

在本課程中,我們學(xué)習(xí)了一個(gè)出色的 Python 模塊,可用于解析和轉(zhuǎn)換 XML 為 JSON,反之亦然。我們還學(xué)習(xí)了如何使用 xmltodict 模塊將 XML 轉(zhuǎn)換為字典。

需要注意的點(diǎn)

1.讀取xml文件的時(shí)候,如果里面包含中文,要指定編碼格式

with open(‘input1.xml', encoding=“UTF-8”) as xml_file

2.將字典類型轉(zhuǎn)化為json格式的字符串,需要把a(bǔ)scii碼自動(dòng)識(shí)別給關(guān)閉,要不然會(huì)出現(xiàn)下面的結(jié)果

json_conversion = json.dumps(parsed_data, ensure_ascii=False)

3.將json字符串寫入文件時(shí)候,需要指定編碼,否則在中文的地方會(huì)出現(xiàn)亂碼

with open(‘output.json', ‘w', encoding=“UTF-8”) as json_file

總結(jié)

到此這篇關(guān)于Python中XML轉(zhuǎn)JSON、XML轉(zhuǎn)字典的文章就介紹到這了,更多相關(guān)Python XML轉(zhuǎn)JSON、字典內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 音視頻剪輯快速入門教程

    Python 音視頻剪輯快速入門教程

    MoviePy 是一個(gè)用于視頻編輯的 Python 模塊,可用于進(jìn)行視頻的基本操作(如剪切、拼接、標(biāo)題插入)、視頻合成(也稱非線性編輯)、視頻處理或創(chuàng)建高級(jí)效果。這篇文章主要介紹了用 Python 快速入門音視頻剪輯,需要的朋友可以參考下
    2021-09-09
  • Python使用requests庫進(jìn)行請(qǐng)求重試

    Python使用requests庫進(jìn)行請(qǐng)求重試

    在進(jìn)行網(wǎng)絡(luò)請(qǐng)求時(shí),由于網(wǎng)絡(luò)波動(dòng)、服務(wù)器繁忙等原因,可能會(huì)出現(xiàn)請(qǐng)求失敗的情況,為了提高請(qǐng)求的成功率,我們可以使用請(qǐng)求重試機(jī)制,本文就來講講如何在 Python 中使用 requests 庫進(jìn)行請(qǐng)求重試吧
    2023-06-06
  • Python中判斷列表是否包含某個(gè)元素的方法大全

    Python中判斷列表是否包含某個(gè)元素的方法大全

    在Python編程中,判斷一個(gè)列表是否包含特定元素是一項(xiàng)常見任務(wù),本文將深入研究各種方法,從基本的成員運(yùn)算符到更高級(jí)的函數(shù)和庫的應(yīng)用,需要的朋友可以參考下
    2026-01-01
  • python實(shí)現(xiàn)壁紙批量下載代碼實(shí)例

    python實(shí)現(xiàn)壁紙批量下載代碼實(shí)例

    本篇文章通過代碼實(shí)例給大家分享了用python實(shí)現(xiàn)壁紙批量下載這個(gè)功能,有興趣的朋友參考下吧。
    2018-01-01
  • 詳解python??OpenCV如何使用背景分離方法

    詳解python??OpenCV如何使用背景分離方法

    這篇文章主要為大家介紹了python?OpenCV如何使用背景分離方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Python?Pandas中DataFrame.drop_duplicates()刪除重復(fù)值詳解

    Python?Pandas中DataFrame.drop_duplicates()刪除重復(fù)值詳解

    在實(shí)際處理數(shù)據(jù)中,數(shù)據(jù)預(yù)處理操作中,常常需要去除掉重復(fù)的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Python?Pandas中DataFrame.drop_duplicates()刪除重復(fù)值的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Python 出現(xiàn)錯(cuò)誤TypeError: ‘NoneType’ object is not iterable解決辦法

    Python 出現(xiàn)錯(cuò)誤TypeError: ‘NoneType’ object is not iterable解決辦法

    這篇文章主要介紹了Python 出現(xiàn)錯(cuò)誤TypeError: ‘NoneType’ object is not iterable解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Python使用pysmb庫訪問Windows共享文件夾的詳細(xì)教程

    Python使用pysmb庫訪問Windows共享文件夾的詳細(xì)教程

    本教程旨在幫助您使用pysmb庫,通過SMB(Server Message Block)協(xié)議,輕松連接到Windows共享文件夾,并列舉其中的文件與文件夾,此外,我們還將簡(jiǎn)要介紹如何下載和上傳文件,以及如何處理可能遇到的連接錯(cuò)誤,需要的朋友可以參考下
    2024-12-12
  • Python?Pandas條件篩選功能

    Python?Pandas條件篩選功能

    這篇文章主要介紹了Python?Pandas條件篩選功能,篩選是在平時(shí)的工作中使用非常頻繁的功能了,下文詳細(xì)的相關(guān)資料介紹,需要的小伙伴可以參考一下
    2022-03-03
  • Pytorch中.detach()與.data的用法小結(jié)

    Pytorch中.detach()與.data的用法小結(jié)

    這篇文章主要介紹了Pytorch中.detach()與.data的用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

崇阳县| 吴川市| 府谷县| 孟村| 信丰县| 临湘市| 岐山县| 怀远县| 通榆县| 依兰县| 新绛县| 历史| 东兰县| 资阳市| 洛宁县| 太仆寺旗| 浮山县| 玉树县| 黎川县| 东丽区| 林西县| 丹阳市| 亚东县| 桦川县| 秀山| 赫章县| 建湖县| 青铜峡市| 二连浩特市| 麻城市| 敦煌市| 乐陵市| 哈巴河县| 宝鸡市| 桃园市| 株洲县| 同仁县| 德清县| 镇远县| 安龙县| 建水县|