質問

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

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