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

Python 문자열에서 정수 값 추출하는 방법 완벽 가이드

Python에서는 정규 표현식(regular expression)을 활용하면 문자열에 포함된 모든 정수 값을 등장 순서대로 손쉽게 추출할 수 있습니다. 아래 예제 코드를 통해 그 방법을 살펴보겠습니다.

정규 표현식으로 정수 추출하기

re 모듈의 findall() 함수를 사용하면 문자열 내의 모든 숫자 패턴을 찾아 리스트로 반환받을 수 있습니다. 이후 map()int()를 조합하여 각 값을 정수형으로 변환합니다.

import re

s = "12 hello 52 19 some random 15 number"
# 숫자를 추출한 뒤 int로 변환
list_of_nums = list(map(int, re.findall(r'\d+', s)))
print(list_of_nums)

출력 결과

[12, 52, 19, 15]

위 코드에서 r'\d+'는 하나 이상의 연속된 숫자를 의미하는 정규 표현식 패턴입니다. 문자열 앞에 r를 붙이면 raw string이 되어 백슬래시를 이스케이프 처리하지 않아도 되므로 코드가 더 깔끔해집니다.

모든 숫자를 하나의 정수로 합치기

만약 문자열에 흩어져 있는 모든 숫자를 하나의 큰 정수로 합쳐서 출력하고 싶다면, str.isdigit() 메서드를 활용해 숫자 문자만 필터링한 후 이어 붙이면 됩니다.

>>> s = "12 hello 52 19 some random 15 number"
>>> print(int(''.join(filter(str.isdigit, s))))
12521915

코드 설명

  • str.isdigit: 각 문자가 숫자(0~9)인지 판별하는 메서드로, filter()의 조건으로 사용됩니다.
  • ''.join(...): 필터링된 숫자 문자들을 하나의 문자열로 연결합니다.
  • int(...): 연결된 문자열을 최종적으로 정수로 변환합니다.

참고로 Python 3에서는 filter()가 제너레이터를 반환하기 때문에 반드시 ''.join()으로 묶어주어야 합니다. 두 방법 모두 상황에 따라 유용하게 사용할 수 있으며, 개별 정수 리스트가 필요하다면 첫 번째 방법을, 하나의 통합된 숫자가 필요하다면 두 번째 방법을 선택하시면 됩니다.