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

파이썬(Python)으로 문자열에서 숫자 추출하기 — isdigit() 메서드 완벽 가이드

문자열에서 숫자를 추출해야 하는 이유

데이터 처리 작업을 하다 보면 텍스트와 숫자가 섞여 있는 문자열에서 숫자만 골라내야 하는 경우가 자주 발생합니다. 예를 들어 로그 파일 분석, 사용자 입력 검증, 웹 스크래핑 결과 정리 등 다양한 상황에서 유용하게 쓰입니다. 파이썬(Python)에서는 문자열 객체가 기본 제공하는 isdigit() 메서드를 활용하면 아주 간단하게 숫자를 추출할 수 있습니다.

방법 1: 문자열에서 개별 숫자(자릿수) 하나씩 추출하기

문자열에 포함된 모든 숫자 문자를 한 글자씩 추출하려면 문자열을 반복(iteration)하면서 각 문자가 숫자인지 isdigit()으로 확인하면 됩니다.

>>> str1 = 'a34e 345 bcd 5he 78 xyz'
>>> for s in str1:
    if s.isdigit():
        print(s)

3
4
3
4
5
5
7
8

위 코드의 동작 원리는 다음과 같습니다.

  • for 루프: 문자열을 한 문자씩 순회합니다.
  • isdigit() 검사: 해당 문자가 '0'~'9' 범위의 숫자인지 판별합니다.
  • print 출력: 조건을 만족하는 숫자만 화면에 출력합니다.

결과를 보면 공백이나 알파벳은 모두 걸러지고, 숫자 문자만 순서대로 출력되는 것을 확인할 수 있습니다.

방법 2: 공백으로 구분된 단어 중 정수만 추출하기

단어들이 공백으로 구분되어 있는 문자열이라면 split() 메서드로 먼저 단어 단위로 나눈 뒤, 각 단어 전체가 숫자로만 이루어져 있는지 확인하는 방식이 더 적합합니다.

>>> str1 = 'h3110 23 cat 444.4 rabbit 11 2 dog'
>>> for s in str1.split():
    if s.isdigit():
        print(s)

23
11
2

실행 결과 분석

  • 'h3110' → 알파벳 'h'가 포함되어 있어 제외됩니다.
  • '444.4' → 소수점(.)은 숫자가 아니므로 isdigit()이 False를 반환하여 제외됩니다.
  • '23', '11', '2' → 오직 숫자로만 구성된 정수이므로 정상적으로 추출됩니다.

참고: 소수까지 추출하고 싶다면?

isdigit()은 소수점을 인식하지 못하기 때문에 '444.4' 같은 실수도 걸러집니다. 소수를 포함한 숫자를 추출하려면 replace()를 활용하거나 정규표현식(re 모듈)을 사용하는 방법이 있습니다.

>>> import re
>>> str1 = 'h3110 23 cat 444.4 rabbit 11 2 dog'
>>> re.findall(r'\d+\.?\d*', str1)
['3110', '23', '444.4', '11', '2']

정리

파이썬에서 문자열의 숫자를 추출하는 핵심은 isdigit() 메서드입니다. 개별 자릿수가 필요하면 문자열을 그대로 순회하고, 정수 단위가 필요하면 split()으로 단어를 나눈 뒤 검사하면 됩니다. 소수나 더 복잡한 패턴이 필요하다면 정규표현식을 함께 활용하는 것이 좋습니다.