2011-07-18 13 views
3

を失敗dateutil私は、電子メールのヘッダから取得した次の日付文字列を解析しようとしています:Pythonのパーサが

from dateutil import parser 
d1 = parser.parse('Tue, 28 Jun 2011 01:46:52 +0200') 
d2 = parser.parse('Mon, 11 Jul 2011 10:01:56 +0200 (CEST)') 
d3 = parser.parse('Wed, 13 Jul 2011 02:00:01 +0000 (GMT+00:00)') 

三番目に障害が発生しました。明白な何かが欠けている?

+5

しようとしました 'parser.parse( '...'、fuzzy = True)'? – phimuemue

+0

phimuemue、答えとしてそれを加え、私はそれを受け入れます! – Petter

+0

eryksun、それは良い提案です。 – Petter

答えて

4

あなたはparser.parse('...', fuzzy=True)を試しましたか? (私はそれが動作すると思います:))

+0

はい、動作します。問題は、以下に指摘されるように、「GMT」の後の余分な「+00:00」です。 「ファジィ」オプションはこれを無視します。 – Petter

2

ライブラリーparsedatetimeを試してください。

In [16]: import parsedatetime.parsedatetime as pdt 

In [17]: p = pdt.Calendar() 

In [18]: p.parse("Wed, 13 Jul 2011 02:00:01 +0000 (GMT+00:00)") 
Out[18]: ((2011, 7, 20, 0, 0, 0, 2, 201, -1), 3) 
+1

それは正しいですか?私はタプルを解釈するのが難しいです。例えば ​​"13"はどこですか? – Petter

+0

このパーサーは混乱しているようで、明日7月20日の水曜日を指すと思います。 – Petter

+0

'parsedatetime'のように見えるのは、常に将来の日付です。ソースコードにコメントがあります: '#その日と月がすでに今年に渡っていたら、年を1ずつ増やしてください。 ' – warvariuc