我正在尝试构建folloiwng行,它是假期包中的对象:
holidays.DE()
我想将其拆分为以下内容:
假期和 .DE()作为参数。作为字符串它不起作用尝试它并收到以下错误消息:
HOLIDAYS_German =假期+选项类型错误:+:'模块'和'str'
不支持的操作数类型我该如何解决?
代码如下所示:
import datetime as dt
import holidays
def BDCTest(date1,date2,Option):
HOLIDAYS_German = holiday+Option
for i in range((date2 - date1).days + 1):
nextday = date1 + dt.timedelta(days=i)
if nextday not in HOLIDAYS_German:
print(nextday.strftime('%d-%m-%y'))
if __name__ == '__main__':
date1 = dt.datetime.strptime('22-12-16', '%d-%m-%y')
date2 = dt.datetime.strptime('22-12-17', '%d-%m-%y')
Option = '.DE'
Test = BDCTest(date1,date2, Option)
答案 0 :(得分:2)
将两个字符串放在一起并不会使Python执行这些字符串。
使用getattr()
function完成动态属性访问; DE
只是holidays
模块上的一个属性,恰好可以调用:
Option = 'DE'
HOLIDAYS_German = getattr(holiday, Option)()
因此getattr()
检索DE
对象(模块)的holiday
属性,并调用结果。请注意,Option
不以.
开头!