在本教程中,我们将学习一个有趣的名为假日的 Python 库,确定了一年中某一天的假日。它返回给定日期的具体结果。我们只需要传递国名。但只能检测圣诞节、新年等固定节假日。
装置
向终端键入以下命令,然后按回车键。
pip install holidays
导入节假日模块检查是否安装。
假日基数()方法
节假日模块提供假日基地()方法,用于检测特定日期的节假日。让我们看看下面的语法。
语法-
holidays.HolidayBase(years=[], expand=True, observed=True, prov=None, state=None)
参数-
它采用以下参数。
- 年份- 它是一个可迭代的整数列表,指定应该预先生成的假日对象。仅当设置增加到“假”时,才能使用此参数。
- expand - 表示一个布尔值,表示新年是否增加节假日。默认情况下,这是真的。
- observed - 当我们将观察到的布尔值设置为 True 时,它将包括周末假日的观察日。
- prov - 它是一个字符串值,指定具有唯一宪法假日的省份。默认情况下(澳大利亚='ACT ',加拿大='ON ',新西兰=无)。
- 州- 它代表了一个拥有独特宪法假日的州。(默认值-美国=无)。
让我们理解下面的例子-
示例-
from datetime import date
import holidays
# Select country
USA_holidays_list = holidays.US()
# printing all the holiday of USA year 2020
for p in holidays.US(years = 2020).items():
print(p)
输出:
(datetime.date(2020, 1, 1), "New Year's Day")
(datetime.date(2020, 1, 20), 'Martin Luther King Jr. Day')
(datetime.date(2020, 2, 17), "Washington's Birthday")
(datetime.date(2020, 5, 25), 'Memorial Day')
(datetime.date(2020, 7, 4), 'Independence Day')
(datetime.date(2020, 7, 3), 'Independence Day (Observed)')
(datetime.date(2020, 9, 7), 'Labor Day')
(datetime.date(2020, 10, 12), 'Columbus Day')
(datetime.date(2020, 11, 11), 'Veterans Day')
(datetime.date(2020, 11, 26), 'Thanksgiving')
(datetime.date(2020, 12, 25), 'Christmas Day')
示例- 2
from datetime import date
import holidays
# Select country
India_holidays_list = holidays.India()
# printing all the holiday of India year 2020
for p in holidays.India(years = 2020).items():
print(p)
输出:
(datetime.date(2021, 1, 14), 'Makar Sankranti / Pongal')
(datetime.date(2021, 1, 26), 'Republic Day')
(datetime.date(2021, 8, 15), 'Independence Day')
(datetime.date(2021, 10, 2), 'Gandhi Jayanti')
(datetime.date(2021, 5, 1), 'Labour Day')
(datetime.date(2021, 12, 25), 'Christmas')
注意——正如我们在输出中看到的,holidays
模块只返回固定日期的假日。
示例- 3:
from datetime import date
import holidays
# Select country
uk_holidays_list = holidays.UnitedKingdom()
# printing all the holiday of India year 2020
for p in holidays.UnitedKingdom(years = 2021).items():
print(p)
输出:
(datetime.date(2021, 1, 1), "New Year's Day")
(datetime.date(2021, 1, 2), 'New Year Holiday [Scotland]')
(datetime.date(2021, 1, 4), 'New Year Holiday [Scotland] (Observed)')
(datetime.date(2021, 3, 17), "St. Patrick's Day [Northern Ireland]")
(datetime.date(2021, 7, 12), 'Battle of the Boyne [Northern Ireland]')
(datetime.date(2021, 8, 2), 'Summer Bank Holiday [Scotland]')
(datetime.date(2021, 11, 30), "St. Andrew's Day [Scotland]")
(datetime.date(2021, 12, 25), 'Christmas Day')
(datetime.date(2021, 12, 27), 'Christmas Day (Observed)')
(datetime.date(2021, 4, 2), 'Good Friday')
(datetime.date(2021, 4, 5), 'Easter Monday [England, Wales, Northern Ireland]')
(datetime.date(2021, 5, 3), 'May Day')
(datetime.date(2021, 5, 31), 'Spring Bank Holiday')
(datetime.date(2021, 8, 30), 'Late Summer Bank Holiday [England, Wales, Northern Ireland]')
(datetime.date(2021, 12, 26), 'Boxing Day')
(datetime.date(2021, 12, 28), 'Boxing Day (Observed)')
我们可以得到想要去的国家的度假名单。
怎么查给定的日期是假期?
假设我们要检查一个具体的日期是不是假期。我们可以这样做。
示例-
from datetime import date
import holidays
# Select country
uk_holidays = holidays.UnitedKingdom()
date1 = '25-25-2021'
j = date1 in uk_holidays
# Cheking whether given data is a holiday
if j == True:
print("Yes: ")
print (uk_holidays.get(date1))
else:
print("No Holiday")
输出:
Yes:
Christmas Day
为印度添加自定义假日
下表遗漏了许多国家/地区,但幸运的是,我们可以为特定国家/地区添加自己的自定义假日。在下面的示例中,我们将添加印度的自定义假日。
示例-
import holidays
add_holidays = holidays.HolidayBase()
print('28-03-2021' in add_holidays) # checking for holiday
# here we are adding Holiday without description
add_holidays.append('28-03-2021')
print('28-03-2021' in add_holidays) # True
# Add Holiday with description
add_holidays.append({'28-03-2021':'Holi: Festival of Colors, Holiday'})
print(add_holidays.get('28-03-2021'))
输出:
False
True
Holi: Festival of Colors, Holiday
说明:
在上面的代码中,首先,我们已经导入了日期和holidays
模块。然后,我们创建了 HolidayBase() 的对象,并检查给定日期是否包含假日。它返回 false,因此我们添加了没有描述的自定义假日。
在另一个语句中,我们添加了带有描述的假日,并打印了结果。
假日图书馆中的可用国家
以下是假日图书馆支持的国家。
| 国家缩写 | 省/州 | | 阿根廷。亦作 THE ARGENTINE | 阿肯色州 | 没有人 | | 澳大利亚 | 你好 | prov = ACT (默认值),NSW,NT,QLD,SA,TAS,VIC,WA | | 奥地利 | (At)人名ˌ(越)乙 | prov = B、K、N、O、S、ST、T、V、 W (默认) | | 比利时 | 存在 | 没有人 | | 加拿大 | 加利福尼亚 | prov = AB、BC、MB、NB、NL、NS、NT、NU、(默认值)、PE、QC、SK、YU | | 哥伦比亚 | 哥伦比亚 | 没有人 | | 捷克人 | 捷克(Czech Republic) | 没有人 | | 丹麦 | 丹麦 | 没有人 | | 英格兰 | | 没有人 | | 欧洲中央银行 | 欧洲央行,西藏自治区 | 跨欧洲自动实时总结算(目标 2) | | 芬兰 | 船方不负担装货费用 | 没有人 | | 法国 | 联邦铁路局(Federal Railroad Administration) | 大都市(默认值),Alsace-Moselle、Guadeloupe、圭亚那、马提尼克、马约特、新喀里多尼亚、会议、法属波利尼西亚、圣巴特雷米、圣马丁、瓦利斯和富图纳 | | 德国 | 特拉华州 | BW、BY、BE、BB、HB、HH、HE、MV、NI、NW、RP、SL、SN、ST、SH、TH | | 匈牙利 | 胡(汉语拼音) | 没有人 | | 爱尔兰 | | 工业管理学(Industrial Engineering) | | 马恩岛 | | 没有人 | | 意大利 | 信息技术 | S7-1200 可编程控制器 | | 日本 | 地方官 | 没有人 | | 墨西哥 | 麦克斯韦(maxwellˌ磁通量单位)ˌ中性(Middlesex) | 没有人 | | 荷兰。亦称 HOLLAND | 荷兰 | 没有人 | | 新西兰 | 新西兰 | prov = NTL、AUK、TKI、HKB、WGN、MBH、NSN、CAN、STC、WTL、OTA、STL、CIT | | 北爱尔兰 | | 没有人 | | 挪威 | 不 | 没有人 | | 抛光剂 | 波兰 | 没有人 | | 葡萄牙 | 体育锻炼 | 没有人 | | 葡萄牙石 | 客运管理处 | 葡萄牙加上大部分人放假的延长天数 | | 苏格兰 | | 没有人 | | 斯洛文尼亚 | 国际度量单位制 | 没有人 | | 斯洛伐克 | 萨斯喀彻温 | 没有人 | | 南非 | 为 | 没有人 | | 西班牙 | 是吗 | prov = AND、ARG、AST、CAN、CAM、CAL、CAT、CVA、EXT、GAL、 IBA、ICA、MAD、MUR、NAV、PVA、RIO | | 瑞典 | 如果 | 没有人 | | 瑞士 | 荣誉勋位爵士 | prov = AG,AR,AI,BL,BS,BE,FR,GE,GL,GR,JU,LU, NE,NW,OW,SG,SH,SZ,SO,TG,TI,UR,VD,VS,ZG,ZH | | 大不列颠及北爱尔兰联合王国 | 联合王国 | 没有人 | | 美国 | 美国 | state = AL,AK,AS,AZ,AR,CA,CO,CT,DE,DC,FL,GA, GU,HI,ID,IL,IN,IA,KS,KY,LA,ME,MD,MH,MA,MI, FM,MN,MS,MT,NE,NV,NH,NJ,NM,NY,NC,ND,MP, 哦,OK,OR,PW,PA,PR,RI,SC | | 威尔士 | | 没有人 |