Seite 1 von 1
Die Deutsche Datum und Zeit mit time.strptime lesen -- wie??
Verfasst: Sonntag 18. März 2007, 21:19
von vak
Hallo,
wie kann man die "locale" so einrichten, das das Folgende
Code: Alles auswählen
>>> time.strptime(u'12. M\xe4r. 08:57', "%d. %b. %H:%M")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "p:\devel\Python\2.5\lib\_strptime.py", line 310, in strptime
(data_string, format))
richtig laufen könnte?
Danke in voraus!
Re: Die Deutsche Datum und Zeit mit time.strptime lesen -- w
Verfasst: Montag 19. März 2007, 00:20
von gerold
vak hat geschrieben:wie kann man die "locale" so einrichten, das das Folgende
Code: Alles auswählen
>>> time.strptime(u'12. M\xe4r. 08:57', "%d. %b. %H:%M")
richtig laufen könnte?
Hallo vak!
Ich würde mich nicht mit locale spielen, sondern schlicht und einfach u"Mär" vorher zu u"Mar" übersetzen.
Code: Alles auswählen
replacements = (
(u"ä", u"a"),
...
(u"Dez", u"Dec"),
)
s = u'12. Mär. 08:57'
for old, new in replacements:
s = s.replace(old, new)
Danach kannst du den Text ganz gemütlich mit ``strptime`` in ein Datum umwandeln.
mfg
Gerold

Re: Die Deutsche Datum und Zeit mit time.strptime lesen -- w
Verfasst: Montag 19. März 2007, 00:24
von vak
gerold, Danke!
Mein beste Ergebnis nach "schema F" ist:
Code: Alles auswählen
locale.setlocale(locale.LC_ALL, 'german')
time.strptime(u'12. Mrz. 08:57', "%d. %b. %H:%M")
aber den "M\xe4r" kann time.strptime sogar mit "%B" nicht aufessen

Re: Die Deutsche Datum und Zeit mit time.strptime lesen -- w
Verfasst: Montag 19. März 2007, 00:40
von gerold
vak hat geschrieben:aber den "M\xe4r" kann time.strptime sogar mit "%B" nicht aufessen
Hi vak!
Das liegt daran, dass time.strptime für die Monatsnamen das calendar-Modul verwendet. Dieses gibt die Monatsnamen aber nicht in Unicode zurück, sondern in einem anderen Coding. Du müsstest, um "M\xe4rz" (z nicht vergessen) angeben zu können, das "u" vor dem String weg lassen.
Aber es gibt auch noch andere Fallstricke. Z.B. heißt in Österreich der Januar Jänner. Dafür müsstest du mit ``locale.setlocale(locale.LC_ALL, "german_austria")`` arbeiten. Wie auch immer, ich würde die Strings schlicht ersetzen und dann mit den englischen Monatsbezeichnungen weiter arbeiten. Zumindest so lange, bis die Unicode-Unterstützung auch bis ins calendar-Modul vorgedrungen ist. (Stand: Python 2.4.4)
mfg
Gerold
PS: Weiß jemand eine bessere Lösung? :K
Re: Die Deutsche Datum und Zeit mit time.strptime lesen -- w
Verfasst: Montag 19. März 2007, 00:43
von vak
gerold hat geschrieben:Du müsstest, um "M\xe4rz" (z nicht vergessen) angeben zu können, das "u" vor dem String weg lassen.
in meinem Log-Datei sind die Monate mit 3 Buchstaben eingegeben.