Come fare il parsing per esempio 2010-04-24T07: 47: 00.007 + 02: 00 con Python strptime
Domanda
Qualcuno sa come analizzare il formato come descritto nel titolo utilizzando il metodo strptime Pythons?
Ho qualcosa di simile a questo:
import datetime
date = datetime.datetime.strptime(entry.published.text, '%Y-%m-%dT%H:%M:%S.Z')
Non riesco a capire che tipo di timeformat questo è. A proposito, io sono un novizio al linguaggio Python (mi sono abituato a C #).
UPDATE
Ecco come ho cambiato il codice in base alle Advise (risposte) di seguito:
from dateutil.parser import *
from datetime import *
date = parse(entry.published.text)
Soluzione
Questa data è nella norma ISO 8601, o più specificamente RFC 3339 , formato.
Queste date non possono essere analizzati con strptime
. C'è un Python problema che lo discute.
dateutil.parser.parse
in grado di gestire una vasta gamma di date, tra cui quella nel tuo esempio.
Se si sta utilizzando un modulo esterno per XML o RSS analisi, v'è probabilmente una routine in là per analizzare tale data.
Altri suggerimenti
Ecco un buon modo per trovare la risposta: utilizzando strftime
, costruire una stringa di formato che emetterà ciò che si vede. Tale stringa sarà, per definizione, essere la stringa necessaria per analizzare il tempo con strptime
.
Se si sta tentando di analizzare feed RSS o Atom quindi utilizzare universale feed Parser . Supporta molti data / formati di ora .
>>> 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)
Questo è il formato datetime XML standard, ISO 8601. Se si sta già utilizzando una libreria XML, la maggior parte di loro hanno datetime parser costruito. xml.utils.iso8601
funziona ragionevolmente bene.
import xml.utils.iso8601
date = xml.utils.iso8601.parse(entry.published.text)
Si può guardare un sacco di altri modi per affrontare questo qui: http://wiki.python.org/moin/WorkingWithTime