3

今日は日付の解析と書式設定に苦労しています。

datetime.dateこの日付形式をorに解析できる人へのポイントdatetime.datetime(私はあまりうるさいわけではありませんが、私は.date.

5th November 2010

4

3 に答える 3

17

dateutil の使用:

In [2]: import dateutil.parser as dparser

In [3]: date = dparser.parse('5th November 2010')

In [4]: date
Out[4]: datetime.datetime(2010, 11, 5, 0, 0)
于 2010-08-11T18:09:12.200 に答える
10

残念ながら、strptime「序数の接尾辞をスキップする」ためのフォーマット文字はありません。そのため、最初にスキップを実行し、REを少し使用してから、結果の「クリア」文字列を解析します。すなわち:

>>> import re
>>> import datetime
>>> ordn = re.compile(r'(?<=\d)(st|nd|rd|th)\b')
>>> def parse(s):
...   cleans = ordn.sub('', s)
...   dt = datetime.datetime.strptime(cleans, '%d %B %Y')
...   return dt.date()
... 
>>> parse('5th November 2010')
datetime.date(2010, 11, 5)

もちろん、datevsの好みは問題ありません。それが、オブジェクトのメソッドの目的です;-)。datetime.date()datetime

ちなみに、 dateutilのようなサードパーティの拡張機能は、多くの「あいまいな」日付解析(または他の派手な日付関連のもの;-)を行う必要がある場合に役立ちます。

于 2010-08-11T18:23:24.847 に答える
5

序数が定数の場合:

datetime.strptime(s, '%dth %B %Y')

そうしないと:

date_str = '5th November 2010'
modified_date_str = date_str[0:1] + date_str[3:]
datetime.strptime(modified_date_str, '%d %B %Y')

または~unutbuのように、dateutilを使用してください :)

于 2010-08-11T18:09:55.880 に答える