[python] PyYAML을 사용하여 YAML 파일의 데이터를 다른 형식으로 변환하기 (CSV, XML 등)

YAML (YAML Ain’t Markup Language)은 사람이 읽기 쉽고 기계가 파싱하기 쉬운 데이터 직렬화 형식입니다. PyYAML은 Python에서 YAML 파일을 다루기 위한 유용한 라이브러리입니다. 이번 글에서는 PyYAML을 사용하여 YAML 파일의 데이터를 다른 형식으로 변환하는 방법에 대해 알아보겠습니다. 주로 CSV와 XML 형식으로 변환하는 예제를 다룰 것입니다.

필요한 라이브러리 설치하기

먼저 PyYAML 패키지를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

pip install pyyaml

YAML 파일 읽기

먼저 YAML 파일을 읽어올 것입니다. 다음 코드를 사용하여 YAML 파일의 데이터를 Python 객체로 로드할 수 있습니다.

import yaml

with open('data.yaml', 'r') as f:
    data = yaml.load(f, Loader=yaml.FullLoader)

위 코드에서 data.yaml은 변환할 YAML 파일의 경로입니다.

데이터를 CSV 형식으로 변환하기

YAML 데이터를 CSV 형식으로 변환하기 위해서는 CSV 파일을 쓰는 코드가 필요합니다. 다음 코드를 사용하여 데이터를 CSV 파일로 저장할 수 있습니다.

import csv

with open('data.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(data[0].keys())  # CSV 파일의 첫 번째 행에 헤더를 작성합니다.

    for item in data:
        writer.writerow(item.values())  # 데이터의 값을 CSV 파일에 작성합니다.

위 코드에서 data는 이전에 YAML 파일에서 로드한 데이터입니다. data.csv는 변환된 CSV 파일의 저장 경로입니다.

데이터를 XML 형식으로 변환하기

YAML 데이터를 XML 형식으로 변환하기 위해서는 XML 파일을 생성하고 데이터를 추가해야 합니다. 다음 코드를 사용하여 데이터를 XML 파일로 저장할 수 있습니다.

import xml.etree.ElementTree as ET

root = ET.Element('root')  # XML 파일의 루트 엘리먼트를 생성합니다.

for item in data:
    element = ET.SubElement(root, 'item')  # XML 파일에 각 데이터 아이템을 추가합니다.

    for key, value in item.items():
        child = ET.SubElement(element, key)  # 아이템의 키와 값을 XML 엘리먼트로 추가합니다.
        child.text = str(value)

tree = ET.ElementTree(root)
tree.write('data.xml')  # XML 파일로 저장합니다.

위 코드에서 data는 이전에 YAML 파일에서 로드한 데이터입니다. data.xml은 변환된 XML 파일의 저장 경로입니다.

결론

이번 글에서는 PyYAML을 사용하여 YAML 파일의 데이터를 CSV와 XML 형식으로 변환하는 방법에 대해 알아보았습니다. PyYAML은 간편한 사용법과 다양한 변환 기능으로 데이터 처리를 용이하게 해줍니다.

관련 링크: