Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 정규식으로 텍스트에서 숫자 추출하는 방법 – \d와 \d+ 패턴 활용법

파이썬(Python)에서는 re 모듈의 정규식을 활용하면 텍스트 속에 섞여 있는 숫자를 아주 간단하게 추출할 수 있습니다. 핵심은 findall() 함수와 숫자를 의미하는 패턴 \d, 그리고 반복 수량자 +의 조합입니다. 목적에 따라 두 가지 방식으로 나누어 살펴보겠습니다.

1. 숫자를 한 자리씩 개별 추출하기

텍스트에 포함된 모든 숫자를 개별 문자 단위로 추출하려면 다음과 같은 정규식 패턴을 사용합니다.

예제

import re
s = '12345 abcdf 67'
result = re.findall(r'\d', s)
print(result)

실행 결과

['1', '2', '3', '4', '5', '6', '7']

패턴 \d는 숫자 한 자리(0~9)를 의미합니다. 따라서 문자열을 탐색하는 과정에서 숫자를 발견할 때마다 해당 숫자 하나씩이 리스트의 개별 요소로 반환됩니다.

2. 연속된 숫자를 그룹 단위로 추출하기

숫자를 개별 자리가 아니라 연속된 덩어리(그룹) 단위로 얻고 싶다면 + 수량자를 붙인 \d+ 패턴을 사용합니다.

예제

import re
s = '12345 abcdf 67'
result = re.findall(r'\d+', s)
print(result)

실행 결과

['12345', '67']

\d+는 "숫자가 하나 이상 연속으로 이어진 부분"을 의미합니다. 그래서 공백이나 영문자 등 숫자가 아닌 문자를 만나기 직전까지의 숫자들이 하나의 그룹으로 묶여 추출됩니다. 예제에서는 '12345'와 '67'이라는 두 그룹이 각각 반환된 것을 확인할 수 있습니다.

핵심 정리

  • \d : 숫자를 한 글자씩 개별적으로 추출
  • \d+ : 연속된 숫자를 하나의 그룹으로 추출
  • re.findall() : 패턴에 일치하는 모든 결과를 리스트 형태로 반환

참고로 위 코드는 파이썬 3 기준 문법인 print(result)를 사용했습니다. 구버전 파이썬 2에서는 print result처럼 괄호 없이 작성해야 하니, 실행 환경에 맞게 사용하시기 바랍니다.