EG 2010-04-24T07:47:00.007+02:00をPython Strtimeで解析する方法
質問
Pythons Strtimeメソッドを使用してタイトルで説明されているように、形式を解析する方法を知っている人はいますか?
私はこれに似たものを持っています:
import datetime
date = datetime.datetime.strptime(entry.published.text, '%Y-%m-%dT%H:%M:%S.Z')
これがどんなタイムフォーマットなのかを理解できないようです。ちなみに、私はPython言語の初心者です(C#に慣れています)。
アップデート
これは、以下のアドバイス(回答)に基づいてコードを変更する方法です。
from dateutil.parser import *
from datetime import *
date = parse(entry.published.text)
解決
その日付はISO 8601、またはより具体的に RFC 3339, 、 フォーマット。
そのような日付は解析できません strptime
. 。あります Pythonの問題 それはこれについて議論しています。
dateutil.parser.parse
あなたの例のものを含む、さまざまな日付を処理できます。
XMLまたはRSSの解析に外部モジュールを使用している場合、おそらくその日付を解析するルーチンがあります。
他のヒント
これが答えを見つける良い方法です: strftime
, 、あなたが見るものを放出するフォーマット文字列を構築します。その文字列は、定義上、時間を解析するために必要な文字列になります strptime
.
RSSまたはアトムフィードを解析しようとしている場合は、使用してください ユニバーサルフィードパーサー. 。サポートします 多くの日付/時刻形式.
>>> import feedparser # parse feed
>>> d = feedparser.parse("http://stackoverflow.com/feeds/question/3946689")
>>> t = d.entries[0].published_parsed # get date of the first entry as a time tuple
>>> import datetime
>>> datetime.datetime(*t[:6]) # convert time tuple to datetime object
datetime.datetime(2010, 10, 15, 22, 46, 56)
これが標準のXML DateTime形式、ISO 8601です。XMLライブラリを既に使用している場合、それらのほとんどはDateTimeパーサーを組み込んでいます。 xml.utils.iso8601
かなりうまく機能します。
import xml.utils.iso8601
date = xml.utils.iso8601.parse(entry.published.text)
ここでそれに対処する他の多くの方法を見ることができます:http://wiki.python.org/moin/workingwithtime