Pythonでこの日付を解析:2010年11月5日
-
27-09-2019 - |
質問
今日は日付の解析とフォーマットで悪い時間を過ごしています。
この日付形式を解析できる人のポイント 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を使用してください:)
所属していません StackOverflow