eval() und fuehrende Nullen

Georg Mischler gm at licht.hl-technik.de
Tue Mar 3 09:03:28 EST 1998


[ kaputte From:-Zeile. Bitte ggf. mit gm at hl-technik.de antworten ]

>>> Uwe Bielz <u.bielz at wad.org> - 3/2/98 10:10 PM >>>
Status: RO

[...]
> [hour, min, sec] = string.split(tm, ':')
> 
> # hour = eval(hour) geht im Skript nicht :-/
> hour = eval(regsub.gsub('^0', '', hour))
> 
> Wenn ich das nicht tu, kommt folgendes (aber nur im Skript, ein
> manuell eingegebenes "eval('09')" im Interpreter klappt!):
> 
> [traceback]
> 	SyntaxError: unexpected EOF while parsing

Hallo Uwe,

Ich vermute, Du hast das manuell nicht wirklich mit '09'
ausprobiert, sondern mit irgendwas zwischen '01' und '07'...
Das Problem liegt darin, dass der Interpteter Ganzzahlen
mit führender Null als Oktalwerte ansieht (probier mal
"print 010"!, geht natuerlich auch ohne "print", aber so ist
das Prinzip anschaulicher).
Die Ausdruecke "print 08" und "print 09" geben aus
naheliegenden Gruenden einen Fehler, Oktalzahlen
dieser Form existieren nicht!

Korrekterweise ist fuer diesen Zweck string.atoi('09') 
vorgesehen. Neben der sicheren Interpretation als
Dezimale stellt das auch noch sicher, dass das Resultat
den richtigen Typ hat. Wenn du damit eine "ValueError"
exception kriegst, dann ist die Logzeile defekt, und sollte
ignoriert werden.

Im Prinzip macht string.atoi() natürlich nicht viel anderes
als deine RE, aber es passiert hardcoded in C, und ist
sowohl technisch wie in der Anwendung wesentlich eleganter.
Im Feinen Manual findest Du diese und andere
Konvertierungsfunktionen übrigens in der Library Reference
beim Standard Module String.


Viel Erfolg!

-Georg

[ kaputte From:-Zeile. Bitte ggf. mit gm at hl-technik.de antworten ]


______________________________________________________________
   python-de          the German Python mailing list
send messages to:   <mailto:python-de at solar.skyport.net>
list manager: <mailto:owner-python-de at solar.skyport.net>
______________________________________________________________




More information about the Python-de mailing list