문자열에서 날짜를 추출하려면 먼저 해당 문자열에 포함될 수 있는 날짜의 형식을 알아야 합니다. 형식을 파악한 후에는 정규 표현식(regular expression)으로 날짜 부분을 추출하고, datetime.datetime.strptime 함수로 이를 파싱(parse)하면 됩니다.
기본 원리
예를 들어, 문자열에 YYYY-MM-DD 형식의 날짜가 포함되어 있다면 다음과 같은 코드로 날짜를 추출하고 파싱할 수 있습니다.
예제 코드
import re, datetime
s = "I have a meeting on 2018-12-10 in New York"
match = re.search(r'\d{4}-\d{2}-\d{2}', s)
date = datetime.datetime.strptime(match.group(), '%Y-%m-%d').date()
print(date)코드 설명
re.search(r'\d{4}-\d{2}-\d{2}', s): 정규 표현식을 사용해 문자열에서 '4자리 숫자-2자리 숫자-2자리 숫자' 패턴, 즉 YYYY-MM-DD 형식의 날짜를 찾습니다.match.group(): 매칭된 날짜 문자열(예: '2018-12-10')을 반환합니다.datetime.strptime(match.group(), '%Y-%m-%d'): 추출한 문자열을 지정한 형식에 맞춰 datetime 객체로 변환합니다..date(): datetime 객체에서 날짜 정보만 담고 있는 date 객체를 얻습니다.
실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
2018-12-10
참고 사항
날짜 형식이 다르다면 정규 표현식과 strptime의 포맷 문자열만 변경하면 됩니다. 예를 들어 DD/MM/YYYY 형식이라면 r'\d{2}/\d{2}/\d{4}' 패턴과 '%d/%m/%Y' 포맷을 사용하면 됩니다. 또한 Python 3 환경에서는 print(date)처럼 괄호를 사용하는 것이 표준입니다.