XML을 Python의 사전으로 변환
Hemank Mehtani
2023년1월30일
![XML을 Python의 사전으로 변환](/img/Python/feature-image---convert-xml-to-dictionary-python.webp)
XML은 Extensible Markup Language로 알려져 있습니다. 중소 량의 데이터를 저장 및 전송하는 데 사용되며 구조화 된 정보 공유에도 널리 사용됩니다. Python을 사용하면 XML 문서를 구문 분석하고 수정할 수 있습니다.
이 튜토리얼에서는 파이썬에서 XML 문자열을 사전으로 변환하는 방법을 보여줍니다.
xmltodict
모듈을 사용하여 XML 문자열을 Python의 사전으로 변환
xmltodict
는 XML 작업을 JSON처럼 느끼게하는 Python의 모듈입니다. XML의 구조로 인해이 모듈을 사용하여 쉽게 사전으로 변환 할 수 있습니다.
아래 코드 스 니펫을 참조하십시오.
import xmltodict
xml_data = """
<student>
<id>DEL</id>
<name> Jack </name>
<email>jack@example.com</email>
<smeseter>8</smeseter>
<class>CSE</class>
<cgpa> 7.5</cgpa>
</student>
"""
d = xmltodict.parse(xml_data)
print(d)
출력:
OrderedDict([('student', OrderedDict([('id', 'DEL'), ('name', 'Jack'), ('email', 'jack@example.com'), ('smeseter', '8'), ('class', 'CSE'), ('cgpa', '7.5')]))])
여기에서 결과가 정렬 된 사전의 형태임을 알 수 있습니다. 정렬 된 사전은 사전에서 키-값 쌍의 순서를 유지합니다. 여기서parse()
함수는 XML 데이터를 정렬 된 사전으로 구문 분석합니다.
cElemenTree
라이브러리를 사용하여 XML 문자열을 Python의 사전으로 변환
cElementTree
는 XML 문서를 구문 분석하고 탐색 할 수있는 필수 Python 라이브러리입니다. cElementTree
를 사용하면 XML 문서를 작업하기 쉬운 트리 구조로 나눌 수 있습니다.
XML 데이터를 구문 분석하고 사전으로 변환하는 자체 함수를 만들 것입니다. collections
모듈의deafultdict
클래스 객체를 사용하여 원하는 형식으로 최종 결과를 얻습니다.
다음 코드를 참조하십시오.
from collections import defaultdict
from xml.etree import cElementTree as ET
def xml2dict(t):
d = {t.tag: {} if t.attrib else None}
children = list(t)
if children:
dd = defaultdict(list)
for dc in map(etree_to_dict, children):
for k, v in dc.items():
dd[k].append(v)
d = {t.tag: {k: v[0] if len(v) == 1 else v for k, v in dd.items()}}
if t.attrib:
d[t.tag].update(("@" + k, v) for k, v in t.attrib.items())
if t.text:
text = t.text.strip()
if children or t.attrib:
if text:
d[t.tag]["#text"] = text
else:
d[t.tag] = text
return d
xml_data = ET.XML(
"""
<student>
<id>DEL</id>
<name> Jack </name>
<email>jack@example.com</email>
<smeseter>8</smeseter>
<class>CSE</class>
<cgpa> 7.5</cgpa>
</student>
"""
)
d = xml2dict(xml_data)
print(d)
출력:
{'student': {'id': 'DEL', 'name': 'Jack', 'email': 'jack@example.com', 'smeseter': '8', 'class': 'CSE', 'cgpa': '7.5'}}
이것은 사전의 트리 구조입니다. 최종 사전은 일반적으로 두 메서드 모두에서 중첩 된 사전입니다. 이는 XML의 구조 때문입니다.
관련 문장 - Python Dictionary
- 파이썬에서 키가 사전에 있는지 확인하는 방법
- Python에서 사전을 목록으로 변환
- 디렉토리의 모든 파일을 얻는 방법
- 파이썬 사전에서 최대 값을 찾는 방법
- 값으로 파이썬 사전을 정렬하는 방법
- 파이썬 2와 3에서 두 개의 사전을 병합하는 방법