Reformieren einer Liste von Datumszeichenfolgen zu Tag, Monat, Jahr in Python

Ich möchte das Format der Zeichenfolgen in einer Liste ändern. Sie sind Daten, aber wurden in Strings umgewandelt.

Ich habe alles für diese Lösung gesehen, aber es scheinen nur Antworten für ein einziges Element zu geben.

Zuerst mache ich eine Serie

Date_List = df.loc['receiveddate'] print Date_List Element1 2015-06-26 Element2 2015-06-25 Element3 2015-06-26 Element4 2015-06-25 Element5 2015-06-25 Element6 2015-07-01 

Dann konvertiere ich es in eine Liste.

 Date_List = [str(i) for i in Date_List] 

Das gibt mir

 ['2015-06-26', '2015-06-25', '2015-06-26', '2015-06-25', '2015-06-25', '2015-07-01'] 

Stattdessen möchte ich eine Liste von Saiten, die Tag, Monat, Jahr gehen

 ['06-26-2015', '06-25-2015...etc.] 

Ich habe festgestellt, dass die häufigste Vorschlag ist, strftime verwenden. Versuchen von Date_List = (datetime.datetime.strptime(i, "%B %d-%Y") for i in Date_List) ValueError: time data '2015-06-26' does not match format '%B %d-%Y' mir nur ValueError: time data '2015-06-26' does not match format '%B %d-%Y'

Also habe ich versucht

 Date_List = (datetime.datetime.strptime(i, "%Y-%m-%d") for i in Date_List) 

Dies hat ['2015-06-26 00:00:00', '2015-06-25 00:00:00', '2015-06-26 00:00:00', '2015-06-25 00:00:00', '2015-06-25 00:00:00', '2015-07-01 00:00:00']

Weiß jemand, wie man die Liste neu formatiert? Oder vielleicht früher, neu formatieren die Serie? Vielen Dank.

  • Konvertieren Sie Datum zu datetime in Python
  • Aufgeteilte Liste der Datumsangaben in Tage
  • Benutzerfreundliches Zeitformat in Python?
  • Python konvertieren string zu datetime
  • Wie führe ich zwei Listen von Daten in eine Reihe von Datumsintervallen?
  • Alter von Geburtsdatum in Python
  • 6 Solutions collect form web for “Reformieren einer Liste von Datumszeichenfolgen zu Tag, Monat, Jahr in Python”

    Du brauchst hier nicht einmal datetime zu verwenden. str.format() diese Objekte einfach einer Funktion zu, die sie zu Strings macht und sie auf die - dann mit str.format()

     Date_List = ['{}-{}-{}'.format(m,d,y) for y, m, d in map(lambda x: str(x).split('-'), Date_List)] 

    Auch aus deinem Code-Snippet sieht es so aus, als würdest du den Monat zuerst, nicht den Tag.

    Du bist fast da. Die datetime.datetime.strptime konvertiert einen String in das datetime Objekt. Sie benötigen datetime.datetime.strftime , um es wieder in string umzuwandeln:

     Date_List = (datetime.datetime.strptime(i, "%Y-%m-%d") for i in Date_List) Date_List = (datetime.datetime.strftime(i, "%m-%d-%Y") for i in Date_List) 

    Sie können es durch eine String-Sicht zu lösen

     New_Date_List = [d[8:10]+"-"+d[5:7]+"-"+d[:4] for d in Date_List] 

    Ändern Sie Ihr Verständnis zu

     import datetime Date_List = [datetime.datetime.strptime(str(i), '%Y-%m-%d').strftime('%m-%d-%Y') for i in Date_List] 

    Reguläre Ausdrücke bieten eine ziemlich einfache Lösung:

     >>> import re >>> re.sub(r'(\d{4})-(\d{2})-(\d{2})', r'\2-\3-\1', '2015-06-25') '06-25-2015' 

    Während es nicht schön ist, sollte es funktionieren, um eine Monats-Tages-Liste zu generieren.

     New_Date_List = [[d][5:7] + '-' + Date_List[d][-2:] + '-' + Date_List[d][:4] for d in Date_List] 
    Python ist die beste Programmiersprache der Welt.