반응형
파이썬의 re 모듈은 정규표현식(Regular Expression, regex)을 담당합니다.
정규표현식은 이메일이나 IP 주소의 유효성 등에 활용이 가능합니다.
그리고 다양한 패턴에 따라서 파일명을 바꾼다거나 하는데도 활용할 수 있습니다.
여기서 알아볼 정규표현식 활용 방법은 쉼표로 구분된 숫자를 추출하는 것입니다.
일반적으로 3자리마다 쉼표로 구분하는 숫자 표기방식을 찾는 방법입니다.
쉼표로 구분되는 숫자는 다음과 같은 형식의 숫자입니다.
- 45,123
- -12,345.01
- 54,321.23
- 123,456,789
파이썬 정규표현식으로 표현하면 다음과 같습니다.
import re def check_number(text): regex = re.compile(r'((-)?\d{1,3}(,\d{3})*(\.\d+)?)') search = regex.search(text) if search: print('%s is a number!!' % search.group(1)) else: print('%s is not a number!!' % text)
이 정규표현식으로 쉼표로 구분되는 숫자를 추출할 수 있습니다.
먼저 음수 기호를 확인((-)?)합니다.
이후에 1~3자리의 숫자(\d{1, 3})를 먼저 확인하고 쉼표로 구분되는 3자리 숫자((,\d{3})*)를 확인합니다.
마지막으로 소수점 부분((\.\d+)?)을 확인합니다.
음수 기호나 소수점 부분은 있거나 없을 수 있기 때문에 ? 기호를 사용합니다.
일반적인 숫자 형식은 위 정규표현식으로 충분히 찾아낼 수 있습니다.
다만 위 정규표현식으로는 0으로 시작하는 숫자를 그대로 숫자로 인식하게 됩니다.
- 012,345.567
해당 문제를 해결하기 위해서 다음과 같이 수정할 수 있습니다.
regex = re.compile(r'(^((-)?([1-9]([0-9]{0,2})?(,\d{3})*|0)(\.\d+)?)$)')
이제 정상적인 숫자가 아니면 숫자가 아니라고 표시됩니다.
앞에 ^와 뒤의 $가 추가되면서 앞이나 뒤에 공백 등이 포함되도 숫자로 인식하지 않습니다.
문자열의 공백 등을 미리 제거하고 함수를 호출하면 됩니다.
이 정규표현식을 활용해서 %나 $ 등이 포함된 문자열에서 숫자만 추출하는 것이 가능합니다.
반응형
'Programming > Python' 카테고리의 다른 글
파이썬 openpyxl로 엑셀(Excel) 파일 읽기/쓰기 (0) | 2020.07.25 |
---|---|
파이썬에서 JSON 데이터 형식 처리 (0) | 2019.10.24 |
3. Django-dashing에 커스텀 위젯 추가 (0) | 2017.02.06 |
2. Django-dashing 커스텀 대시보드 만들기 (0) | 2017.01.30 |
1. Django-dashing으로 IoT 대시보드 생성 (2) | 2017.01.24 |