이번 글에서는 파이썬의 정규 표현식(regular expression) 패키지인 re 모듈을 활용하여 텍스트 파일(URL 텍스트 파일)에서 이메일 주소(이메일 ID)를 추출하는 방법을 알아보겠습니다.
핵심 원리는 간단합니다. 먼저 re 모듈로 이메일 주소의 형식(패턴)을 정의한 뒤, findall() 함수를 호출하여 해당 패턴과 일치하는 모든 문자열을 텍스트에서 찾아내는 것입니다.
실행 결과 미리 보기
입력
text = "Please contact us at contact@tutorialspoint.com for further information." + \
" You can also give feedback at feedback@tutorialspoint.com"
출력
['contact@tutorialspoint.com', 'feedback@tutorialspoint.com']
예제 코드
import re my_text = "Please contact us at contact@tutorialspoint.com for further information."+\ " You can also give feedback at feedback@tutorialspoint.com" my_emails = re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", my_text) print(my_emails)
출력 결과
['contact@tutorialspoint.com', 'feedback@tutorialspoint.com']
정규 표현식 패턴 해설
위 코드에서 사용된 패턴 r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+"를 부분별로 살펴보면 다음과 같습니다.
[a-z0-9\.\-_+]+: 이메일 계정 이름 부분으로, 영문 소문자·숫자·마침표(.)·하이픈(-)·더하기(+)·밑줄(_)이 한 번 이상 반복됩니다.@: 계정 이름과 도메인을 구분하는 기호입니다.[a-z0-9\.\-_+]+: 도메인 이름 부분입니다.\.[a-z]+: 마침표 뒤에 오는 최상위 도메인(com, net, org 등)을 나타냅니다.
re.findall() 함수는 전체 텍스트에서 패턴과 일치하는 모든 문자열을 리스트(list) 형태로 반환합니다. 따라서 별도의 반복문 없이 단 한 번의 호출로 여러 개의 이메일 주소를 동시에 추출할 수 있어 매우 효율적입니다.