Ich möchte Daten in diesem Format analysieren, aber Teile der Zeichenfolge ignorieren. 'Mi, 27 Oct 1770 22:17:00 GMT' Von dem, was ich gesammelt habe, unterstützt datetime die Zeitzonen nicht sehr gut. Was gut ist, ich möchte nur den Zeitzonen-Teil der Saite ignorieren, ohne eine Saitenmanipulation durchführen zu müssen. Gibt es etwas, das ich% Z durch unten ersetzen kann, um "irgendeine Zeichenkette hier" zu sagen und Daten als solche zu analysieren? Auch verstehe ich nicht, warum es Zeitzonen wie PST, GMT aber nicht EST analysieren wird. Es scheint auf keinen Fall tzinfo anzuhängen, nicht sicher, welche Art von String wirklich nach dem% Z-Teil sucht.Python analysieren Datumsformat, Teile der Zeichenfolge ignorieren
>>> import datetime
>>> y = datetime.datetime.strptime('Wed, 27 Oct 1770 22:17:00 GMT', '%a, %d %b %Y %H:%M:%S %Z')
>>> y = datetime.datetime.strptime('Wed, 27 Oct 1770 22:17:00 PST', '%a, %d %b %Y %H:%M:%S %Z')
>>> y = datetime.datetime.strptime('Wed, 27 Oct 1770 22:17:00 EST', '%a, %d %b %Y %H:%M:%S %Z')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/brazil-pkg-cache/packages/Python/Python-2.5.1.17.1/RHEL5_64/DEV.STD.PTHREAD/build/lib/python2.5/_strptime.py", line 331, in strptime
(data_string, format))
ValueError: time data did not match format: data=Wed, 27 Oct 1770 22:17:00 EST fmt=%a, %d %b %Y %H:%M:%S %Z
Hinweis: dateutil für mich keine Option ist, möchte ich falsch zahlreiche Formate und kann nicht zulassen, dass dateutil versehentlich Daten interpretieren unterstützen. (d. h. dateutil scheint eine Schätzung zu verwenden, wenn Daten wie 01/02/2010, 1. Februar oder 2. Januar angezeigt werden). Ich möchte einfach nur versuchen, Formate zu akzeptieren, die ich in einer Bestellung angegeben habe, bis ich ein Match bekomme.
Reine Codeantworten sind an sich nicht hilfreich, da sie dazu neigen promote _copy-and-paste programming._ Wann immer es möglich ist, sollte eine Erklärung des Codes und _why_ es funktioniert. :) – Miguel
Obwohl ich stimme @Miguel, +1 für eine eindeutige Antwort, die die Frage anspricht. –
Ist das nicht einfacher: '.join (' Mi, 17 Oct 2011 22:22:22 + 0300'.split() [1: 6]) Auch das obige funktioniert nicht b/c der Zeitzoneneinstellung. Sie erhalten ValueError: nicht konvertierte Daten bleiben erhalten – radtek