20

これらのような日付を日時オブジェクトに解析したい:

  • 2008 年 12 月 12 日
  • 2009 年 1 月 1 日

以下は、最初の日付で機能します。

datetime.strptime("December 12th, 2008", "%B %dth, %Y")

しかし、日番号の接尾辞 ('st') のために 2 番目は失敗します。では、strptime に文書化されていないワイルドカード文字はありますか? それとも全体的により良いアプローチですか?

4

5 に答える 5

18

dateutil.parser モジュールを使用してみてください。

import dateutil.parser
date1 = dateutil.parser.parse("December 12th, 2008")
date2 = dateutil.parser.parse("January 1st, 2009")

追加のドキュメントは次の場所にあります: http://labix.org/python-dateutil

于 2009-08-11T02:41:28.897 に答える
9

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)
>>> 
于 2009-08-11T02:42:26.583 に答える
8

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")
于 2009-08-11T02:42:09.423 に答える