파이썬에서 문자열에 포함된 숫자만 골라내야 하는 경우, 리스트 컴프리헨션(list comprehension)과 isdigit() 메서드를 조합하면 매우 간단하게 해결할 수 있습니다. 이 글에서는 기본적인 추출 방법과 함께, 더 복잡한 상황에서 유용하게 쓸 수 있는 정규표현식 방법까지 소개합니다.
예제 코드
아래는 공백으로 구분된 문자열에서 숫자를 추출하는 대표적인 예제입니다.
my_string = "python is 12 fun 2 learn"
print("The string is : ")
print(my_string)
my_result = [int(i) for i in my_string.split() if i.isdigit()]
print("The numbers list is :")
print(my_result)실행 결과
The string is : python is 12 fun 2 learn The numbers list is : [12, 2]
코드 설명
먼저 문자열을 정의하고 콘솔에 출력하여 원본 데이터를 확인합니다.
split()메서드로 문자열을 공백 기준으로 나눈 뒤, 리스트 컴프리헨션을 통해 각 요소를 하나씩 순회하면서isdigit()함수로 해당 요소가 숫자인지 판별합니다.숫자로 판별된 문자열은
int()함수를 거쳐 정수형으로 변환되며, 이 값들이 새로운 리스트에 저장되어 변수에 할당됩니다.최종적으로 결과 리스트가 콘솔에 출력됩니다.
정규표현식을 활용한 대안 방법
위 방법은 단어 단위로 분리된 경우에만 동작합니다. 만약 "abc123def45"처럼 숫자가 문자와 붙어 있는 문자열이라면, 표준 라이브러리의 re 모듈을 사용하는 것이 훨씬 유연합니다.
import re my_string = "python is 12 fun 2 learn" numbers = re.findall(r'\d+', my_string) print([int(n) for n in numbers]) # [12, 2]
패턴 \d+는 하나 이상 연속된 숫자와 일치하므로, 어떤 형태의 문자열에서도 안정적으로 숫자를 추출할 수 있습니다. 상황에 맞게 두 가지 방법을 선택해 사용하시면 됩니다.