반응형
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
반응형
'Python' 카테고리의 다른 글
[pyQT] File/Directory 선택 Dialog 띄우기 QFileDialog (0) | 2020.12.11 |
---|---|
[Python] file 의 mimetype 가져오기 (0) | 2020.09.24 |
[Python] list 를 text file 에 한줄씩 쓰기 ( \n 안나오게 ) (0) | 2020.09.05 |
[Python] scheduler 사용하기 #APScheduler (2) | 2020.09.04 |
Python Decorator 파라메터 사용하기 #decorator parameter (3) | 2020.09.03 |
댓글