본문 바로가기
Python

[Python] get number from string #텍스트에서 숫자만 가져오기

by bryan.oh 2020. 9. 6.
반응형

Python

 

'25일 전', '1249 views' 등 에서 숫자인 25, 1249 만 뽑아낼 때,

간단하게 이렇게 씁니다.

str1 = "25 일 전"
days = int(''.join(list(filter(str.isdigit, str1))))
print(days)
# 25

이 코드의 문제점

str1 = "-50 포인트"
points = int(''.join(list(filter(str.isdigit, str1))))
print(points)
# 50

마이너스 처리가 안됩니다 ;;

 

마이너스는 re 로 해결

위의 문제점은 아래와 같이 re 를 사용해서 해결할 수 있습니다.

import re

str1 = "-50 포인트"
result = [int(d) for d in re.findall(r'-?\d+', str1)]
print(result)
# [-50]

findall 은 배열을 반환합니다.

여러개 일 경우 어떻게 될까요?

import re

str1 = "20 포인트 하락한 -50 포인트"
result = [int(d) for d in re.findall(r'-?\d+', str1)]
print(result)
# [20, -50]

잘 됩니다.

추가

아래와 같은 경우는?

str1 = "10 20-30포인트 하락한 -50 포인트"
result = [int(d) for d in re.findall(r'-?\d+', str1)]
print(result)
# [10, 20, -30, -50]

 

 

728x90
반응형

댓글