Datumsstring umformatieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
brasil66
User
Beiträge: 27
Registriert: Mittwoch 20. Juli 2005, 19:01
Wohnort: Braunschweig

Hallo!

Bevor ich mir hier einen abbreche und wieder viel zu kompliziert denke(wie das halt so ist, wenn man verschüttete c-kenntnisse im hinterkopf hat und sich an die einfachheit in python einfach nicht gewöhnen will :wink: ), ich habe

folgendes problem:

ich habe einen datumstring in der form "31.12.2005"(dd.mm.yyyy) und will diesen in die form "20051231"(yyyymmdd) umbasteln.
muss ich das zeichen für zeichen mit dummy-strings erledigen, oder geht´s auch eleganter oder gibt´s da evtl. eine funktion für?

für einen tipp oder wink mit dem zaunpfahl wäre ich dankbar!

gruß aus braunschweig
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

brasil66 hat geschrieben: ich habe einen datumstring in der form "31.12.2005"(dd.mm.yyyy) und will diesen in die form "20051231"(yyyymmdd) umbasteln.
Hi brasil66!

Es ginge zwar auch mit den Funktionen strptime und strftime des time-Moduls, aber ich finde folgende Lösung ab Python 2.4 einfacher.

Code: Alles auswählen

>>> s = "31.12.2005"
>>> print "".join(s.split(".")[::-1])
20051231
>>>
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

gerold hat geschrieben:folgende Lösung ab Python 2.4 einfacher.
Wieso gerade Python 2.4? Ich habe es mit Python 2.3 getestet und das geht auch. Ich könnte mir höchstens vorstellen, dass es in Python 2.2 noch nicht ging, weil die Slice Syntax noch nicht komplett war.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Leonidas hat geschrieben: Ich habe es mit Python 2.3 getestet und das geht auch.
Hi Leonidas!

Sorry, ich dachte, dass dieses Feature erst ab 2.4 dazu gekommen ist. Umso besser, wenn es schon in der 2.3 funktioniert. :D

lg
Gerold
:-)
Zuletzt geändert von gerold am Montag 1. August 2005, 10:52, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Achso und ich dachte mir wäre was entgangen :wink:

Ja, deine Lösung für das Problem scheint mir dafür sehr geeignet, ich hätte es wohl genauso gemacht :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
brasil66
User
Beiträge: 27
Registriert: Mittwoch 20. Juli 2005, 19:01
Wohnort: Braunschweig

kann mal einer einen wagenheber holen und meine kinnlade wieder hochkurbeln?
das ist ja echt einfach, ich bin begeistert! DANKE!

ich hatte echt schon angefangen, die einzelnen zeichen manuell hin- und her zu schaufeln .....
BlackJack

Ich würde es in 2.4 lieber mit `reversed()` schreiben. Ist irgendwie verständlicher als die Slice-Syntax.

Code: Alles auswählen

In [17]: s = "31.12.2005"

In [18]: print ''.join(reversed(s.split('.')))
20051231
brasil66
User
Beiträge: 27
Registriert: Mittwoch 20. Juli 2005, 19:01
Wohnort: Braunschweig

yep, jetzt mit reversed kapiere ich es auch und ist auch logisch. und das ich den string einfach nur "umdrehen" muss, habe ich später erst gesehen ..... jaja, ich weiß, vorher nachdenken :lol:
Antworten