인터넷 상에서 노출되어 있는 전화번호를 수집하여 보이스 피싱 범죄 단체가 있다고 가정하겠습니다. 그렇다면 온갖 웹사이트를 크롤링해가면서, 텍스트 중에 전화번호의 형태를 갖춘 것만 저장하려고 노력하겠죠? 이런 경우에 정규식을 활용하면 조금 더 쉽게 전화번호만 찾아낼 수 있을 것입니다. (저는 보이스피싱범들이 실제로 어떻게 번호를 수집하는지 잘 모릅니다. 다만, 보이스피싱범들의 수법을 예상해보는 것입니다.)
파이썬의 re 패키지를 활용하면 정규식 문제를 쉽게 해결할 수 있습니다.
import re
p = re.compile(r'\d+[-]\d+[-]\d+')
data = '''
안녕하세요. 맛집 블로거 맛있어맛있어입니다.
제 연락처는 아래 있습니다.
김과장 010-1234-5678
홍길동 019-9999-9999
파이썬 정규식
031-1111-1111 서점
보이스 피싱 당하지 마세요.
02-1234-1234 떡볶이집
'''
phone_number_list = p.findall(data)
print(phone_number_list)
위 코드를 살펴보면 먼저 \d+[-]\d+[-]\d+라는 패턴을 만들고, 그 패턴에 부합하는 것만 찾아서 리스트에 담아줍니다. \d는 숫자를 뜻하고 +는 반복을 뜻합니다. 즉, 숫자의 반복 - 숫자의 반복 - 숫자의 반복 패턴을 갖는 것을 모두 찾으라는 뜻이 됩니다.
관련 글
'Dev > python' 카테고리의 다른 글
[pandas] 데이터프레임의 행들을 반복문에서 얻고 싶다면, df.iterrows() (0) | 2023.01.14 |
---|---|
[python] *args, **kwargs란? (0) | 2023.01.13 |
[python] 두 개의 리스트를 동시에 이터레이션하려면 zip 함수 사용 (0) | 2023.01.13 |
[python] 문자열에서 .exe 실행파일명만 추출하기(정규식) (0) | 2023.01.11 |
[python] 메모장에 데이터 쓰고, 추가하고, 읽기 (with 구문) (0) | 2023.01.10 |
[python] memcached에 캐시 데이터 쓰고 읽기(pymemcache) (0) | 2023.01.09 |
[python] Redis에 데이터 쓰고 읽기 (0) | 2023.01.08 |
[python] pydantic 모델을 딕셔너리(dict)로 변환하는 방법 (0) | 2023.01.07 |