본문으로 건너뛰기

Python 문자열에서 숫자 추출

문자열에서 숫자를 추출하는 다양한 방법을 소개합니다.

1. re.sub() 함수로 숫자 추출

re.sub()는 아래와 같이 3개 인자를 받으며, string에서 pattern과 일치하는 부분을 repl로 교체합니다.

re.sub(pattern, repl, string)

re.sub()를 이용하면, 패턴으로 숫자가 아닌 문자들을 찾아서 ''으로 변경하여 제거하여 숫자만 남길 수 있습니다. 이런 방식으로 숫자만 추출할 수 있습니다.

import re

string = 'abc1234, ^&*2233ppwq'
numbers = re.sub(r'[^0-9]', '', string)
print(numbers)

Output:

12342233

2. re.findall() 함수로 연속적인 숫자 추출

re.findall(pattern, string)은 문자열에서 pattern에 해당하는 내용을 리스트에 추가하고, 그 리스트를 리턴합니다. 이 함수를 이용하면 연속적인 숫자만 추출할 수 있습니다.

import re

string = 'abc1234, ^&*2233ppwq'
numbers = re.findall(r'\d+', string)
print(numbers)

Output:

['1234', '2233']

3. re.findall() 함수로 숫자 낱개로 추출

r'\d' 패턴은 숫자 1개를 의미합니다. 이 패턴을 사용하면 숫자 1개씩 찾아서 리스트에 추가하게 됩니다.

import re

string = 'abc1234, ^&*2233ppwq'
numbers = re.findall(r'\d', string)
print(numbers)

Output:

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