파이썬 holidays 라이브러리란?
이 튜토리얼에서는 holidays 라이브러리에 대해 알아보겠습니다. holidays 라이브러리는 특정 날짜가 여러 국가의 공휴일인지 여부를 손쉽게 판별할 수 있도록 도와주는 파이썬 패키지입니다. 참고로 이 라이브러리를 통해 조회할 수 있는 정보는 공휴일(public holidays)로 한정됩니다.
라이브러리 설치
먼저 아래 명령어를 실행해 모듈을 설치합니다.
pip install holidays
설치가 완료되면 다음 단계를 따라 공휴일 정보를 조회할 수 있습니다. 예시로 2020년 인도의 공휴일 목록을 가져오는 과정을 살펴보겠습니다. 아래 단계를 따르면 2020년 인도의 전체 공휴일 목록을 얻을 수 있습니다.
- holidays 모듈을 임포트합니다.
- holidays.India()를 인스턴스화하고, 키워드 인자 years에 2020을 전달합니다.
- 날짜를 키로 하는 공휴일 딕셔너리가 반환됩니다.
- 딕셔너리 항목을 순회하며 출력합니다.
각국의 국가 코드는 holidays 라이브러리 공식 문서에서 확인할 수 있습니다.
예제 1: 특정 연도의 모든 공휴일 조회
아래 코드로 해당 연도의 모든 공휴일을 가져올 수 있습니다.
# importing holidays module
import holidays
# getting India holidays
india_holidays = holidays.India(years=2020)
# iterating over the holidays
for date, occasion in india_holidays.items():
# printing date and occasion
print(f'{date} - {occasion}')실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
2020-01-14 - Makar Sankranti / Pongal 2020-01-26 - Republic Day 2020-08-15 - Independence Day 2020-10-02 - Gandhi Jayanti 2020-05-01 - Labour Day 2020-12-25 - Christmas
이와 같은 방식으로 라이브러리가 지원하는 어떤 국가의 공휴일도 조회할 수 있습니다. 국가 클래스만 바꿔서 코드를 수정하면 됩니다. 다음으로, 특정 날짜가 어떤 공휴일인지 확인하는 방법을 알아보겠습니다.
예제 2: 특정 날짜의 공휴일 이름 확인
# importing holidays module
import holidays
# getting India holidays
india_holidays = holidays.India()
# occasion on 15-08-2020
print(f"Occasion on 15-08-2020: {india_holidays.get('15-08-2020')}")실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Occasion on 15-08-2020: Independence Day
예제 3: 특정 날짜가 공휴일인지 판별
get() 메서드의 반환값을 활용하면 특정 날짜가 공휴일인지 아닌지도 간단히 확인할 수 있습니다.
# importing holidays module
import holidays
# getting India holidays
india_holidays = holidays.India()
# holiday date
date_one = '15-08-2020'
date_two = '16-08-2020'
print(f"Is it holiday on {date_one}: {india_holidays.get(date_one) != None}")
print(f"Is it holiday on {date_two}: {india_holidays.get(date_two) != None}")실행 결과
위 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Is it holiday on 15-08-2020: True Is it holiday on 16-08-2020: False
마무리
이처럼 holidays 라이브러리를 활용하면 전 세계 다양한 국가의 공휴일을 단 몇 줄의 코드로 손쉽게 조회하고 판별할 수 있습니다. 튜토리얼 내용 중 궁금한 점이 있다면 댓글로 남겨주세요.