2010-10-15 61 views
2

有誰知道如何使用Pythons strptime方法解析標題中描述的格式?如何解析例如2010-04-24T07:47:00.007 + 02:00 with Python strptime

我有一些與此類似:

import datetime  
date = datetime.datetime.strptime(entry.published.text, '%Y-%m-%dT%H:%M:%S.Z') 

我似乎無法弄清楚這是什麼樣的TIMEFORMAT的。順便說一下,我是Python語言的新手(我習慣於C#)。

UPDATE

我這是怎麼發生變化,按下面的提醒(答案)代碼:

from dateutil.parser import * 
from datetime import * 
date = parse(entry.published.text) 

回答

5

該日期採用ISO 8601或更具體的RFC 3339格式。

這樣的日期不能用strptime解析。有一個Python issue討論這一點。

dateutil.parser.parse可以處理各種各樣的日期,包括您的示例中的日期。

如果您使用外部模塊進行XML或RSS解析,那麼可能會有一個例程來解析該日期。

-1

這是標準的XML日期時間格式,ISO 8601如果您已經使用XML圖書館,其中大部分都內置日期時間解析器。xml.utils.iso8601工作得很好。

import xml.utils.iso8601 
date = xml.utils.iso8601.parse(entry.published.text) 

你可以看一下一堆其他的方法來處理,在這裏: http://wiki.python.org/moin/WorkingWithTime

+1

「一個XML庫」。哪一個?你的意思是PyXML? – snapshoe 2010-10-15 23:21:01

+0

大多數XML庫都包含用於解析XML日期時間的便利功能。 PyXML碰巧是我包括的例子。 – 2010-10-15 23:32:47

0

下面就來尋找答案的好方法:使用strftime,構建一個格式字符串,會散發出你所看到的。根據定義,該字符串將是用strptime來分隔時間所需的字符串。

0

如果您嘗試解析RSS或Atom訂閱源,請使用Universal Feed Parser。它支持many date/time formats

>>> 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) 
相關問題