質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3150閲覧

jpholidayで独自の休日を追加できない

hiro_python

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/01/02 02:04

日本の祝日を取得するライブラリ、jpholidayを使い
独自の休日を追加しようと試みましたが、サンプルコードをそのまま入力してもエラーで弾かれます。
datetimeのライブラリ構造の問題かと思い、試行錯誤しましたが解決に至りませんでした。

どこを修正すれば正常に動くのかアドバイスを頂けると幸いです。

import jpholiday import datetime class TestHoliday(jpholiday.OriginalHoliday): def _is_holiday(self, date): if date == datetime.date(2020, 2, 9): return True return False def _is_holiday_name(self, date): return '特別休暇'
jpholiday.is_holiday(datetime.date(2020, 2, 9))

エラー内容:

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-60-430cfc371103> in <module> ----> 1 jpholiday.is_holiday(datetime.date(2020, 2, 9)) ~/opt/anaconda3/lib/python3.8/site-packages/jpholiday/jpholiday.py in is_holiday(date) 33 34 for holiday in registry.RegistryHolder.get_registry(): ---> 35 if holiday.is_holiday(date): 36 return True 37 ~/opt/anaconda3/lib/python3.8/site-packages/jpholiday/registry.py in is_holiday(self, date) 52 53 def is_holiday(self, date): ---> 54 if self._is_holiday(date): 55 return True 56 else: <ipython-input-7-37a573019c6d> in _is_holiday(self, date) 12 13 def _is_holiday(self, date): ---> 14 if date in [datetime.strptime(holiday,'%Y-%m-%d').date() for holiday in self.original_holidays.keys()]: 15 return True 16 return False <ipython-input-7-37a573019c6d> in <listcomp>(.0) 12 13 def _is_holiday(self, date): ---> 14 if date in [datetime.strptime(holiday,'%Y-%m-%d').date() for holiday in self.original_holidays.keys()]: 15 return True 16 return False AttributeError: module 'datetime' has no attribute 'strptime'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/01/02 02:23 編集

質問にあるコードでは、 if date == datetime.date(2020, 2, 9): となっていますが、エラーメッセージでは if date in [datetime.strptime(holiday,'%Y-%m-%d').date() ... となっています。コードの方で実行するとエラーにはなりません。 ちなみに、datetime.strptime ではなく datetime.datetime.strptime になります。
hiro_python

2022/01/02 02:25

新規でNotebookを作った所、解決しました。ありがとうございます!
guest

回答2

0

Jupyterを使用している場合、以前に実行したコードが残っていて想定外の動作をすることがあります。

この場合は、以下のコードが残っているのがエラーの原因です。

python

1#独自の休日をファイルから読み込む 2import jpholiday 3import configparser 4 5class TestHoliday(jpholiday.OriginalHoliday): 6 original_holidays = {} 7 8 config = configparser.ConfigParser() 9 config.read('holidays.ini') 10 if 'HOLIDAYS' in config: 11 original_holidays = config['HOLIDAYS'] 12 13 def _is_holiday(self, date): 14 if date in [datetime.strptime(holiday,'%Y-%m-%d').date() for holiday in self.original_holidays.keys()]: 15 return True 16 return False 17 18 def _is_holiday_name(self, date): 19 if date.strftime('%Y-%m-%d') in self.original_holidays.keys(): 20 return self.original_holidays[date.strftime('%Y-%m-%d')] 21 else: 22 return None

新しいノートブックを作ってそこで実行するか、

python

1del TestHoliday 2class TestHoliday(jpholiday.OriginalHoliday): 3 def _is_holiday(self, date): 4 if date == datetime.date(2020, 2, 9): 5 return True 6 return False 7 8 def _is_holiday_name(self, date): 9 return '特別休暇' 10 11jpholiday.is_holiday(datetime.date(2020, 2, 9))

を実行しください。

投稿2022/01/02 02:32

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro_python

2022/01/02 03:16

以前実行したコードが残る場合があるんですね。それは気付きませんでした。 今後役に立ちそうです。 ご丁寧に解説してくださり、ありがとうございます♪
guest

0

自己解決

Notebookを別で作った所、解決しました。

投稿2022/01/02 02:25

hiro_python

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問