728x90
반응형
SMALL
XML (Extensible Markup Language)
인터넷 웹페이지를 만드는 HTML을 획기적으로 개선하여 만든 언어이다. 홈페이지 구축기능, 검색기능 등이 향상되었고, 웹 페이지의 추가와 작성이 편리해졌다.
XML 만들기
from xml.etree.ElementTree import Element, dump
node1 = Element("first")
node1.text = "안녕"
dump(node1)
#결과
<first>안녕</first>
root.append(node1) # 노드에 노드 추가하기
node2 = Element("second")
node2.text = "Hello"
root.append(node2)
dump(root)
#결과
<xml><first>안녕</first><second>Hello</second></xml>
dump(root) # 속성 추가하기
#결과
<xml kind="language"><first>안녕</first><second>Hello
</second></xml>
XML 파싱
from xml.etree.ElementTree import parse
# getroot() 함수로 xml를 불러온 후 findall() 함수로 원하는 노드를 불러온다.
tree = parse('test.xml')
root = tree.getroot()
student = root.findall("student")
name = [x.findtext("name") for x in student]
age = [x.findtext("age") for x in student]
score = [x.find("score").attrib for x in student]
print(name)
print(age)
print(score)
['peter', 'elgar', 'hong']
['24', '21', '36']
[{'math': '80', 'english': '97'}, {'math': '67', 'english': '56'},
{'math': '76', 'english': '81'}]
tree = parse(‘파일명.xml’) # xml 파일 가져오기
root = tree.getroot() # root 노드 가져오기
root.findall("student") # 일치하는 모든 노드 가져오기
student.find("name") # 일치하는 첫 번째 노드 가져오기
--> <name>peter</name>
student.findtext("name") # 일치하는 첫 번째 노드의 값 가져오기
--> <name>peter</name>
student.findtext("score").attrib # 일치하는 첫 번째 노드의 속성 가져오기
--> <score math="76" english="81"/>
JSON 파싱
JSON (JavaScript Object Notation)은 속성-값 쌍( attribute–value pairs and array data types (or any other serializable value)) 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.
import json #json을 다루기 위한 모듈
from collections import OrderedDict
from pprint import pprint #json을 좀 더 보기 편하게 출력
with open(‘test.json’, ‘r’) as f:
data = json.load(f, object_pairs_hook=OrderedDict)
pprint(data)
#결과
OrderedDict([(‘student1’,
OrderedDict([(‘age’, 24),
(‘name’, ‘peter’),
(‘score’,
OrderedDict([(‘math’, 80), (‘english’, 97)]))])),
(‘student2’,
OrderedDict([(‘age’, 21), (‘name’, ‘elgar’), (‘score’, 80)])),
(‘student3’,
OrderedDict([(‘age’, 36), (‘name’, ‘hong’), (‘score’, 80)]))])
728x90
반응형
LIST
'Programming > Python' 카테고리의 다른 글
14. 데이터베이스 (Database) (0) | 2021.12.15 |
---|---|
13. 네트워크 (0) | 2021.12.15 |
11. 파일 입출력 (0) | 2021.12.15 |
10. 예외처리 (0) | 2021.12.15 |
09. 모듈 (Module) (0) | 2021.12.08 |