2017-07-03 7 views
-1

私は休日パッケージのオブジェクトであるfolloiwngライン構築するためにしようとしています:Pythonは文字列を追加し、一緒

holidays.DE() 

私は、次のようにそれを分割したい:

休日を.DE()をパラメータとして使用します。

HOLIDAYS_German =休日は+オプションはTypeError:+のためのサポートされていないオペランドのタイプ(S):「モジュール」と「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

本当にあなたのルートを下りたい場合は、 'exec("%s() "%HOLIDAYS_German)'を実行することができます。これは、これをユーザーの入力に公開していなければ問題ありません。 1行のコードが追加されていますが、かなり汚れています。 –

答えて

2

ちょうどPythonはそれらの文字列を実行させない2つの文字列を置きます。

動的属性アクセスはgetattr() functionで実行されます。 DEだけholidaysモジュールの属性、呼び出し可能であることを起こるいずれか

Option = 'DE' 
HOLIDAYS_German = getattr(holiday, Option)() 

だからgetattr()holidayオブジェクト(モジュール)のDE属性を取得し、その結果が呼び出されます。 Optionではありません。.で始まります。

+0

ありがとうございました。これは私が探していたものです。 – MCM

関連する問題