[Python] 딕셔너리에서 정규표현식으로 특정 형식의 키 추출하기

2025. 7. 28. 00:01·개발 (Development)/Python

Python의 딕셔너리는 키-값 쌍으로 데이터를 관리하는 데 매우 효율적인 자료구조입니다. 그런데 딕셔너리의 키가 일정한 규칙을 따를 때, 정규표현식을 활용하면 특정 조건에 맞는 키만 간편하게 추출할 수 있습니다.

이 글에서는 "PREFIX_원하는값_숫자_SUFFIX"와 같은 형태의 키를 기준으로 특정 값만 필터링하거나 추출하는 방법을 소개합니다.

1. 문제 예시

아래와 같이 키가 특정 형식을 따르는 딕셔너리가 있다고 가정하겠습니다.

my_dict = {
    "KEY_ABC_01_TYPE": "value1",
    "KEY_DEF_02_TYPE": "value2",
    "KEY_GHI_03_TYPE": "value3",
    "OTHER_DATA": "value4"
}

여기서 "KEY_DEF_02_TYPE"처럼 중간에 "DEF"라는 값을 포함한 키만 골라내고 싶다고 할 때, 정규표현식을 사용하면 유용합니다.

2. 정규표현식으로 패턴 정의하기

키의 형식은 다음과 같습니다:

KEY_(원하는값)_숫자_TYPE

이를 정규표현식으로 나타내면 다음과 같습니다.

r"KEY_(.*?)_\d+_TYPE"
  • KEY_: 접두어
  • (.*?): 우리가 추출하고 싶은 중간 값
  • \d+: 숫자
  • _TYPE: 접미어

3. 특정 값 하나만 필터링할 경우

원하는 값이 "DEF"인 경우에만 매칭되도록 하려면 다음과 같이 코드를 작성할 수 있습니다.

import re

desired_value = "DEF"
pattern = re.compile(rf"KEY_{re.escape(desired_value)}_\d+_TYPE")

matching_keys = [key for key in my_dict if pattern.match(key)]
print(matching_keys)

출력 결과

['KEY_DEF_02_TYPE']

4. 여러 값을 동시에 조건으로 넣고 싶을 경우

원하는 값이 "DEF" 또는 "GHI"인 경우에만 매칭되도록 하려면 다음과 같이 처리할 수 있습니다.

desired_values = ["DEF", "GHI"]
joined = '|'.join(map(re.escape, desired_values))  # 'DEF|GHI'
pattern = re.compile(rf"KEY_({joined})_\d+_TYPE")

matching_keys = [key for key in my_dict if pattern.match(key)]
print(matching_keys)

출력 결과

['KEY_DEF_02_TYPE', 'KEY_GHI_03_TYPE']

5. 원하는 값만 추출하고 싶을 경우

패턴에 맞는 키들에서 중간의 "원하는값"만 따로 추출하고 싶을 경우 다음과 같이 사용할 수 있습니다.

extracted_values = [
    match.group(1)
    for key in my_dict
    if (match := pattern.match(key))
]
print(extracted_values)

출력 결과

['DEF', 'GHI']

마무리

정규표현식을 활용하면 딕셔너리에서도 키의 형식을 기준으로 조건을 적용하고 필요한 값만 쉽게 추출할 수 있습니다. 특히 키가 "PREFIX_중간값_숫자_SUFFIX"와 같은 고정된 형식을 갖는 경우, 이런 방식은 매우 강력하고 유연한 도구가 됩니다.

반응형

'개발 (Development) > Python' 카테고리의 다른 글

[Python] requests 요청 후 기다리는 로직과 타임아웃 설정  (0) 2025.07.28
[Python] 문자열 2줄 이상인지 확인하는 방법  (0) 2025.07.28
[Python] Pandas DataFrame에서 조건에 따라 행 삭제 및 특정 데이터 추출하는 방법 정리  (2) 2025.07.20
[Python] pandas로 DataFrame 비교하여 특정 값 제거하는 방법  (0) 2025.07.20
[Python] JSON 파일을 CSV로 변환  (1) 2025.06.01
'개발 (Development)/Python' 카테고리의 다른 글
  • [Python] requests 요청 후 기다리는 로직과 타임아웃 설정
  • [Python] 문자열 2줄 이상인지 확인하는 방법
  • [Python] Pandas DataFrame에서 조건에 따라 행 삭제 및 특정 데이터 추출하는 방법 정리
  • [Python] pandas로 DataFrame 비교하여 특정 값 제거하는 방법
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • 개발 (Development) (165)
        • Algorithm (1)
        • Angular (1)
        • AWS (6)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (31)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (11)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JSON
    백준자바
    java
    docker
    백준온라인저지
    자바
    PostgreSQL
    백준
    Linux
    MyBatis
    Kubernetes
    Kafka
    python
    오답노트
    백준알고리즘
    DevOps
    리눅스 마스터 2급 2차
    JPA
    Vue.js
    ADsP
    javascript
    springboot
    데이터분석
    AWS
    deepseek
    timescaledb
    Linux master
    리눅스 마스터 2급
    pandas
    Spring boot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Python] 딕셔너리에서 정규표현식으로 특정 형식의 키 추출하기
상단으로

티스토리툴바