Python에서 문자열을 날짜/시간으로 구문 분석하는 방법(strptime)
Python에서 문자열을 날짜/시간 객체로 변환하는 방법을 알아보세요. strptime 방법을 익히고, 날짜 문자열을 구문 분석하고, 시간대를 처리하고, 형식 오류를 방지하세요.
개요
사용자 양식 제출을 처리하고, 웹 데이터베이스를 스크랩하고, 서버 로그를 구문 분석하고, CSV 시트를 가져오는 애플리케이션을 구축할 때 날짜 및 시간 정보를 원시 텍스트 문자열(예: `"2026-05-25 15:45"`)로 자주 수신하게 됩니다. 계산, 날짜 연산 또는 문자열 정렬을 수행할 수 없으므로 이를 Python datetime 객체로 구문 분석해야 합니다.
이 변환의 기본 방법은 `datetime.strptime(date_string, format_string)`입니다. 이름은 "문자열 구문 분석 시간"을 나타냅니다. 이 함수는 원시 날짜 문자열과 지시문이 포함된 형식 템플릿(예: 연도는 `%Y`, 월은 `%m`, 일은 `%d`)을 사용하여 해당 날짜/시간 객체를 반환합니다.
입력 문자열이 제공된 형식 템플릿과 정확히 일치하지 않으면 Python은 `ValueError`를 발생시킵니다. 충돌을 방지하려면 항상 `strptime()` 작업을 `try-Exception` 블록에 래핑하세요. 다양하고 구조화되지 않은 날짜 입력을 구문 분석하는 애플리케이션의 경우 `python-dateutil`과 같은 외부 라이브러리가 파서 감지를 자동화하는 데 도움이 될 수 있습니다.
코드 및 실행 출력
이 스크립트는 datetime.strptime을 사용하여 날짜 문자열을 구문 분석하고, 잘못된 입력을 처리하고, 날짜 차이를 계산하는 방법을 보여줍니다.
from datetime import datetime
# 1. Basic parsing using strptime
date_str = "2026-05-25 18:30:00"
format_template = "%Y-%m-%d %H:%M:%S"
parsed_date = datetime.strptime(date_str, format_template)
print("Parsed DateTime:", parsed_date)
print("Month parsed:", parsed_date.month)
print("Hour parsed:", parsed_date.hour)
# 2. Handling parse errors safely
bad_date_str = "25/05/2026"
try:
datetime.strptime(bad_date_str, "%Y-%m-%d")
except ValueError as e:
print(f"\nParse Error: {e}")
# Correcting the format
corrected_date = datetime.strptime(bad_date_str, "%d/%m/%Y")
print("Corrected Parse:", corrected_date.date())Parsed DateTime: 2026-05-25 18:30:00
Month parsed: 5
Hour parsed: 18
Parse Error: time data '25/05/2026' does not match format '%Y-%m-%d'
Corrected Parse: 2026-05-25단계별 구현
- datetime 모듈에서 datetime 클래스를 가져옵니다.
- 날짜 문자열의 정확한 구조를 식별합니다(예: 일, 월, 구분 기호).
- 적절한 지시어(예: %Y, %m, %d)를 사용하여 datetime.strptime(date_string, format_pattern)을 호출하세요.
- 잘못된 문자열을 정상적으로 처리하려면 구문 분석 문을 try-Exception ValueError 블록으로 래핑하세요.
자주 묻는 질문
strftime과 strptime의 차이점은 무엇입니까?
strptime(문자열 구문 분석 시간)은 문자열을 구문 분석하여 날짜/시간 객체를 생성합니다. strftime(문자열 형식 시간)은 날짜/시간 객체를 읽을 수 있는 문자열 표현으로 형식화합니다.
ISO 8601 날짜 문자열(예: "2026-05-25T18:30:00Z")을 어떻게 구문 분석하나요?
Python 3.7+에서는 수동 형식 템플릿 없이도 ISO 문자열을 효율적으로 처리하는 내장된 datetime.fromisoformat(string) 함수를 사용할 수 있습니다.
관련 주제
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python 문자열
Python의 마스터 문자열 조작. 명확하고 실행 가능한 코드 예제를 통해 문자열 메서드, 슬라이싱, 연결 및 형식 지정 기술을 알아보세요.
Python 문자열 메서드 치트 시트
Python 문자열 조작에 대한 완전한 참조 가이드입니다. 문자열 속성의 서식 지정, 검색, 분할, 바꾸기 및 확인을 마스터합니다.
Python 데코레이터와 데코레이터 디자인 패턴: 주요 차이점
Python 데코레이터와 클래식 데코레이터 디자인 패턴을 비교해 보세요. 실행 가능한 코드를 사용하여 정의 시 함수 래핑과 런타임 동적 개체 구성 간의 차이점을 이해합니다.