sagen, dass ich eine Liste der Daten, die unten in einem der fünf Arten formatiert werden:leistungsfähigere Way Termine für in Python für MySQL Format
Date_Type_1 = 2001 Apr 15
Date_Type_2 = 2001 Apr
Date_Type_3 = 2000 Spring
Date_Type_4 = 2000 Nov-Dec
Date_Type_5 = 2001
Damit meine aktuelle Liste wie folgt aussehen.
Date_list = ["2001 Apr 15", "2004 May 15", "2011 Jan", "2011 Fall", "2000 Nov-Dec", "2012", "2000 Spring" ]
Ich möchte jetzt versuchen, diese Daten zu formatieren, damit sie an eine MySQL-Datenbank übergeben werden können. Die einzige Art, wie ich weiß, ist, eine Menge Condition Flow zu verwenden. Hier ist ein Beispiel, wie ich das machen würde. Ich werde nicht ALLE Bedingungen einschließen, da es zu viel Platz beanspruchen würde.
for i in Date_list:
year = i[:4]
#This will be my conditional logic to define a month.
#This is only an example. Will not include all 12 months, 4 seasons, and various bi-months
if "Apr" in i and "Mar-Apr" not in i:
month = 4
if "Mar-Apr" in i:
month = 3
if "May" in i and "May-Jun" not in i:
month = 5
if "Apr-May" in i:
month = 4
if "Spring" in i:
month = 3
#This will be conditional logic to define the day.
#I would do this for each of the 31 days of the month.
if "15" in i and "2015" not in i:
day = 15
date_return = datetime.datetime(year,month,day)
date_format = date_return.date().isoformat
Das Problem damit ist, dass ich eine Reihe von Annahmen mache. Ich bin damit einverstanden, Jahreszeiten zu definieren "Frühling/Sommer .." und die zweimonatlich (z. B. März/April) gibt als bestimmte Monate zurück. Das Problem, zumindest mit der Definition von Tagen ist, es wird nicht Tage fangen, wenn:
test_list = [2011 May, 2015 Apr 15]
for i in test_list:
if "15" in i and "2015" not in i:
day = 15
Dies wird nicht den Tag zu fangen. Ich frage mich, ob es einen effizienteren Weg gibt, dies zu tun? Diese aktuelle Methode würde mehr als 50 bedingte Anweisungen erfordern, um den Tag/die Monate zu definieren.
Ich glaube nicht, dass Ihr Code langsam ist, aber sieht aus wie Ihre effiziente, kürzere Version. – YOU
Beide sind gute Antworten und sehr elegant. Danke, ich wünschte, ich könnte beides auswählen. – Sean