質問

今日は日付の解析とフォーマットで悪い時間を過ごしています。

この日付形式を解析できる人のポイント datetime.date また datetime.datetime (私はあまりにもうるさくではありませんが、私は好むでしょう .date):

5th November 2010

役に立ちましたか?

解決

使用 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)

他のヒント

不運にも、 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)

あなたの好み date vs datetime もちろん問題ありません、それが .date() の方法 datetime オブジェクトは;-)です。

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

順序が一定の場合、次のとおりです。

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を使用してください:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top