はじめに
Pythonでコードを書いている時にエラーが発生しました。
発生したのは文字列が入った2次元配列を日付に変換しているときでした。
今回はその時のエラーの原因と対象方法についてです。
エラー&原因
まず発生したエラーですが
ValueError: time data ' ' does not match format '
というものでした。
(' '
と'%Y/%m/%d %H:%M'
部分は条件によって変わります)
エラーは
「値のエラー:’ ‘のTime型のデータはフォーマットに’%Y/%m/%d %H:%M’一致しません」
と言っています。
(' '
と'%Y/%m/%d %H:%M'
部分は条件によって変わります)
このエラーは、Pythonの「datetime.strptime()」関数を使って文字列を日付時刻オブジェクトに変換する際に、指定されたフォーマットと文字列が一致しないために発生するようです。
エラーメッセージから何となくどういう時に発生するか分かるかもしれません。
次がエラーメッセージが表示されるサンプルプログラムです。
from datetime import datetime
date_str = '2023/06/12' # 時間のフォーマットがstrptimeの形式に合っていない(例では不足)
date_obj = datetime.strptime(date_str, '%Y/%m/%d %H:%M')
これを実行すると同様にエラーメッセージが表示されます。
次はエラーメッセージが表示されずに上手くプログラムが実行される例です。
from datetime import datetime
# 時間部分を含む文字列を使用
date_str = '2023/06/12 11:16'
date_obj = datetime.strptime(date_str, '%Y/%m/%d %H:%M')
変換する文字列がdatetime.strptimeの形式に一致しています。
そのためエラーにならないというわけです。
年月日だけの場合は次のようにします。
from datetime import datetime
# フォーマットを修正
date_str = '2023/06/12'
date_obj = datetime.strptime(date_str, '%Y/%m/%d')
変換するdatetime側のフォーマットを変えればいいですね。
さいごに
今回はPythonの日付の変換のときのエラーについてでした。
datetime.strptimeは便利な関数なので使えるとコーディングが楽になりますね。
また日付データは扱いが個人的には面倒な印象もなります。
ただ、日付データを扱う事は多いですので使えるようになると便利ですね。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。