본문으로 건너뛰기

[Python] 문자열에서 숫자만 추출

정규표현식을 이용하여 문자열에서 숫자(Integer)만 추출할 수 있습니다. 예제와 함께 알아보겠습니다.

1. re.sub()

re.sub()는 정규표현식에 해당하는 문자를 어떤 문자로 교체하는 함수입니다. 이 함수를 이용하면 숫자들만 추출하여 1개의 문자열로 만들 수 있습니다.

# Syntax
re.sub(pattern, repl, string)

다음과 같이 문자열에서 숫자가 아닌 문자를 모두 제거하고 숫자로 구성된 문자열을 만들 수 있습니다.

import re

str = 'aaa1212, ^&*2222pp'
result = re.sub(r'[^0-9]', '', str)
print(result)

실행 결과:

12122222

2. re.findall()

findall(pattern, string)은 문자열의 pattern에 해당하는 내용들을 찾고, 그 내용들을 리스트로 리턴합니다.

정규표현식 r'\d+'는 연속된 숫자들에 대한 패턴입니다.

import re

str = 'aaa1212, ^&*2323pp'
result = re.findall(r'\d+', str)
print(result)

실행 결과:

['1212', '2323']

3. re.findall() (예제 2)

r'\d'는 숫자 1개를 의미합니다. 이런 패턴으로 찾으면 숫자 1개씩 분리되어 리스트로 리턴됩니다.

import re

str = 'aaa1212, ^&*2323pp'
result = re.findall(r'\d', str)
print(result)

실행 결과:

['1', '2', '1', '2', '2', '3', '2', '3']