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

파이썬(Python) 문자열에서 숫자만 추출하는 방법 – isdigit과 정규표현식 완벽 가이드

파이썬에서 문자열에 포함된 숫자만 골라내야 하는 경우, 리스트 컴프리헨션(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+는 하나 이상 연속된 숫자와 일치하므로, 어떤 형태의 문자열에서도 안정적으로 숫자를 추출할 수 있습니다. 상황에 맞게 두 가지 방법을 선택해 사용하시면 됩니다.