これらのような日付を日時オブジェクトに解析したい:
- 2008 年 12 月 12 日
- 2009 年 1 月 1 日
以下は、最初の日付で機能します。
datetime.strptime("December 12th, 2008", "%B %dth, %Y")
しかし、日番号の接尾辞 ('st') のために 2 番目は失敗します。では、strptime に文書化されていないワイルドカード文字はありますか? それとも全体的により良いアプローチですか?
dateutil.parser モジュールを使用してみてください。
import dateutil.parser
date1 = dateutil.parser.parse("December 12th, 2008")
date2 = dateutil.parser.parse("January 1st, 2009")
追加のドキュメントは次の場所にあります: http://labix.org/python-dateutil
Gustavo Niemeyer のpython_dateutilが必要です-- インストールしたら、
>>> from dateutil import parser
>>> parser.parse('December 12th, 2008')
datetime.datetime(2008, 12, 12, 0, 0)
>>> parser.parse('January 1st, 2009')
datetime.datetime(2009, 1, 1, 0, 0)
>>>
strptime は、その実装が基礎となる C ライブラリに依存しているため注意が必要です。そのため、一部の詳細はプラットフォーム間で異なります。必要な文字を一致させる方法はないようです。ただし、最初にデータを消去できます。
# Remove ordinal suffixes from numbers.
date_in = re.sub(r"(st|nd|rd|th),", ",", date_in)
# Parse the pure date.
date = datetime.strptime(date_in, "%B %d, %Y")