[python] PyYAML을 사용하여 YAML 파일의 데이터를 정규표현식을 이용해 검색하기

PyYAML은 Python에서 YAML 파일을 읽고 쓰는데 사용되는 라이브러리입니다. YAML은 사람이 손으로 작성하기 쉽고 읽기 쉬운 데이터 직렬화 형식입니다. 이번 블로그 포스트에서는 PyYAML을 사용하여 YAML 파일로부터 데이터를 읽고, 정규표현식을 이용해 검색하는 방법에 대해 알아보겠습니다.

YAML 파일 읽기

먼저, PyYAML을 사용하기 위해서는 해당 라이브러리를 설치해야 합니다. 다음 명령을 사용하여 PyYAML을 설치해주세요.

pip install pyyaml

다음은 YAML 파일을 읽어서 데이터를 파싱하는 예제 코드입니다.

import yaml

def read_yaml_file(file_path):
    with open(file_path, 'r') as file:
        data = yaml.load(file, Loader=yaml.FullLoader)
    return data

file_path = "data.yaml"
data = read_yaml_file(file_path)
print(data)

위 코드에서 read_yaml_file 함수는 주어진 파일 경로에서 YAML 파일을 읽어와 데이터를 파싱합니다. yaml.load 함수를 사용하여 YAML 파일의 내용을 파이썬 객체로 변환합니다. 반환된 데이터는 딕셔너리 형태로 저장됩니다.

정규표현식을 이용한 검색

이제 PyYAML을 사용하여 YAML 파일을 파싱했으니, 정규표현식을 사용하여 데이터를 검색해보겠습니다. 예를 들어, YAML 파일에서 특정 패턴을 가지는 값들을 찾는다고 가정해봅시다.

import yaml
import re

def read_yaml_file(file_path):
    with open(file_path, 'r') as file:
        data = yaml.load(file, Loader=yaml.FullLoader)
    return data

def search_data(data, pattern):
    matched_values = []
    for value in data.values():
        if isinstance(value, str):
            if re.search(pattern, value):
                matched_values.append(value)
        elif isinstance(value, dict):
            matched_values.extend(search_data(value, pattern))
    return matched_values

file_path = "data.yaml"
data = read_yaml_file(file_path)
pattern = r'\d{2}-\d{3}'
matched_values = search_data(data, pattern)
print(matched_values)

위 코드에서 search_data 함수는 주어진 데이터를 재귀적으로 탐색하면서 정규표현식에 매칭되는 값을 찾습니다. 반환된 값은 리스트 형태로 저장됩니다.

정규표현식 r'\d{2}-\d{3}'는 “숫자 2개 - 숫자 3개” 패턴을 의미합니다. 따라서 YAML 파일 내에서 이러한 패턴을 가지는 값을 검색할 수 있습니다.

위 예제에서는 search_data 함수에 딕셔너리 형태의 데이터를 전달했지만, 필요에 따라서 다른 형태의 데이터에도 동작할 수 있도록 함수를 수정할 수 있습니다.

결론

PyYAML을 사용하여 YAML 파일을 읽고, 정규표현식을 이용해 데이터를 검색하는 방법에 대해 알아보았습니다. 이러한 기술을 사용하여 YAML 파일로부터 원하는 데이터를 원하는 방식으로 추출할 수 있습니다. Python, PyYAML, 정규표현식과 같은 도구와 기술들을 조합하여 데이터 처리 작업을 효율적으로 수행할 수 있습니다.