티스토리 뷰

728x170

문자열에서 숫자만 추출하는 방법에 대해서 알아보겠습니다.

 

정규표현식(Regex)를 이용한 방법

re.findall(pattern, text)는 문자열 text에서 정규표현식 pattern에 일치하는 내용을 찾아서 리턴합니다.

패턴 r'\d+'에서 d는 숫자를 의미하며 +는 1개 이상을 의미합니다. 즉, 숫자가 1개 이상으로 연결된 문자열을 찾으라는 의미입니다.

 

아래와 같이 찾으면, 숫자 패턴만 찾아서 리스트로 리턴합니다.

  • 1~9의 숫자가 붙어있는 문자열들만 찾아서 리턴합니다.
  • 숫자만 추출해서, 그 숫자들을 연결한 문자열을 리턴하진 않습니다.
import re

text = "abc 123 def 456"
numbers = re.findall(r'\d+', text)
print(numbers) # ['123', '456']

 

isdigit()을 이용한 방법

for문과 isdigit()을 이용하여 아래와 같이 숫자를 추출할 수 있습니다.

  • split()으로 문자열을 분리하고 분리된 문자열이 숫자로 구성되어있으면 int로 변환하여 리스트로 리턴합니다.
text = "abc 123 def 456"
numbers = [int(x) for x in text.split() if x.isdigit()]
print(numbers) # [123, 456]

참고로, isnumeric()는 isdigit()과 비슷하지만, 유니코드 숫자들도 인식합니다.

 

 

References: https://stackoverflow.com/questions/4289331/how-to-extract-numbers-from-a-string-in-python

그리드형
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함
세로형