2016-04-05 16 views
0

ich eine Textdatei mit Daten in einer Liste haben, etwa so:Python- Iterieren durch eine Liste datetime.strptime mit

values1 = ['1999-02-11', '1999-02-10', '1999-02-09', '1999-02-08', '1999-02-05', 
      '1999-02-04', '1999-02-03', '1999-02-02', '1999-02-01', '1999-01-29', 
      '1999-01-28', '1999-01-27', '1999-01-26', '1999-01-25', '1999-01-22', 
      '1999-01-21', '1999-01-20', '1999-01-19', '1999-01-18', '1999-01-15', 
      '1999-01-14', '1999-01-13', '1999-01-12', '1999-01-11', '1999-01-08', 
      '1999-01-07', '1999-01-06', '1999-01-05', '1999-01-04'] 

und was ich möchte durch jeden Wert laufen tun, mit diesem Code um das Format mit datetime zu erhalten. Dies sollte mir dann erlauben, diese Liste von Daten gegen eine Liste von Werten zu plotten.

Ich versuche, dies in den folgenden paar Zeilen Code zu tun (dies ist nur die Liste in das richtige Format zu bekommen, habe ich habe noch nicht den Code um die Grafik zu zeichnen!)

for line in values1: 
    datetime.strptime(line, '%Y-%m-%d').date() 

aber es gibt mir die folgende Fehlermeldung:

ValueError: time data 'Date' does not match format '%Y-%m-%d' 

nicht sicher Im warum?

Valueerror: Zeitdaten ‚Date‘ paßt nicht-Format ‚% Y-% m-% d‘

Sie sagen, Sie die Liste der Daten aus einer Datei lesen. Kann sein, dass eine der Zeilen das Wort Datum anstelle des Datumswerts hat, oder es kann die Kopfzeile sein.

der Code, den Sie angegeben haben, funktioniert. Überprüfen Sie die Eingabewerte aus der Datei

Ich habe es geschafft zu arbeiten, dank der Vorschlag, dass der Header innerhalb der Textdatei einen Fehler verursachen würde!

values1=calues1[1::] for line in values1: datetime.strptime(line, '%Y-%m-%d').date()

+2

Für mich dieser gearbeitet: 'Import datetime' ' für Zeile in Werten1. '' datetime.datetime.strptime (Linie, '% Y-% m-% d') Datum() ' –

+0

Fangen Sie die Ausnahme und drucken Sie den Datumswert. Sie werden wissen, ob das Datum _actually_ ungültig ist. – JRodDynamite

Antwort

2

Als Fehler sagt

ValueError: time data 'Date' does not match format '%Y-%m-%d' 

Sie sagen, Sie die Liste der Daten aus einer Datei lesen. Kann eine der Zeilen sein, haben Sie das Wort Date anstelle des Datumswerts, oder kann es sein, ist die Kopfzeile.

der Code, den Sie angegeben haben, funktioniert. Überprüfen Sie die Eingabewerte aus der Datei

+0

Es könnte definitiv sein, dass die erste Zeile "Datum" wäre! also, wenn ich durch iteriert, ignorieren die erste "Datum" "Wert, würde es funktionieren? –

+1

@AlexWalton warum versuchen Sie es nicht? – msw

+1

@AlexWalton können Sie es versuchen. Das sollte funktionieren, wenn es in der ersten Zeile ist Aber was ist, wenn es sich irgendwo in den Daten befindet? Es wäre besser, die Ausnahme zu behandeln und den Wert auszudrucken, um das Problem zu verstehen. – Anbarasan

1

Dieser Code Arbeit für mich

from datetime import datetime 

values1 = ['1999-02-11', '1999-02-10', '1999-02-09', '1999-02-08', '1999-02-05', '1999-02-04', '1999-02-03', '1999-02-02', '1999-02-01', '1999-01-29', '1999-01-28', '1999-01-27', '1999-01-26', '1999-01-25', '1999-01-22', '1999-01-21', '1999-01-20', '1999-01-19', '1999-01-18', '1999-01-15', '1999-01-14', '1999-01-13', '1999-01-12', '1999-01-11', '1999-01-08', '1999-01-07', '1999-01-06', '1999-01-05', '1999-01-04'] 

for line in values1: 
    print datetime.strptime(line, '%Y-%m-%d').date() 

Ausgabe

1999-02-11 
1999-02-10 
1999-02-09 
1999-02-08 
1999-02-05 
1999-02-04 

vielleicht sind Sie Problem der Import.

p.s. Python 2.7

1

Stellen Sie sicher, dass importierte Datetime-Objekt haben von Datetime-Modul (die erste Zeile im folgende Snippet):

>>> from datetime import datetime 
>>> 
>>> values1 = ['1999-02-11', '1999-02-10', '1999-02-09', '1999-02-08', '1999-02-05', '1999-02-04', '1999-02-03', '1999-02-02', '1999-02-01', '1999-01-29', '1999-01-28', '1999-01-27', '1999-01-26', '1999-01-25', '1999-01-22', '1999-01-21', '1999-01-20', '1999-01-19', '1999-01-18', '1999-01-15', '1999-01-14', '1999-01-13', '1999-01-12', '1999-01-11', '1999-01-08', '1999-01-07', '1999-01-06', '1999-01-05', '1999-01-04'] 
>>> 
>>> for line in values1: 
...  x = datetime.strptime(line, '%Y-%m-%d').date() 
...  print x 
... 
1999-02-11 
1999-02-10 
1999-02-09 
1999-02-08 
1999-02-05 
1999-02-04 
1999-02-03 
1999-02-02 
1999-02-01 
1999-01-29 
1999-01-28 
1999-01-27 
1999-01-26 
1999-01-25 
1999-01-22 
1999-01-21 
1999-01-20 
1999-01-19 
1999-01-18 
1999-01-15 
1999-01-14 
1999-01-13 
1999-01-12 
1999-01-11 
1999-01-08 
1999-01-07 
1999-01-06 
1999-01-05 
1999-01-04 
1

ich glaube, das Problem in Ihrem Import ist. Sie müssen das Datetime-Modul innerhalb von datetime importieren.

Verwenden entweder:

import datetime 

for line in values1: 
    print datetime.datetime.strptime(line, '%Y-%m-%d').date() 

oder

from datetime import datetime 

for line in values1: 
    print datetime.strptime(line, '%Y-%m-%d').date() 

arbeitet sowohl auf Python 2.7 und 3 (Verwendung print() statt für Python 3).

+0

Ohne (kurze) Erklärung ist diese Antwort nicht sehr nützlich (± 0). – msw

Verwandte Themen