eval() und fuehrende Nullen

Christian Tismer tismer at appliedbiometrics.com
Tue Mar 3 10:37:38 EST 1998


Status: RO

...
> Bei der Umwandlung der Logdatei-Form "Oct 11 21:07:46" in eine zu
> time.gmtime() passende Form bin ich nun darüber gestolpert, daß eval()
> nicht mit fuehrenden Nullen umgehen kann, d.h. um die Minuten aus

Doch, es kann, aber die Interpretation ist dann leider oktal, daran
liegt's.

> obiger Logdateizeile in eine Zahl konvertieren zu koennen muss ich die
> fuehrende Null mit regsub.gsub() weg-ersetzen:
> 
> # l = "Nov 11 22:21:09 kruecke pppd[223]: Connect: ppp0 <--> /dev/tty2"
> 
> [mon, day, tm, junk] = string.split(l, None, 3)
> ...
> [hour, min, sec] = string.split(tm, ':')
> 
> # hour = eval(hour) geht im Skript nicht :-/
> hour = eval(regsub.gsub('^0', '', hour))
> min = eval(regsub.gsub('^0', '', min))
> sec = eval(regsub.gsub('^0', '', sec))

Tip: nimm string.atoi, das tut was Du willst.

import string
[hour, min, sec] = map(string.atoi, string.split(tm,':'))

> Wenn ich das nicht tu, kommt folgendes (aber nur im Skript, ein
> manuell eingegebenes "eval('09')" im Interpreter klappt!):

Mußt Du falsch liegen, das darf nicht klappen.

...
>             09
>             ^
>         SyntaxError: unexpected EOF while parsing
> 
> Das finde ich ein wenig unelegant. Ist das eine Nachfrage bei Guido
> wert? Hab ich was uebersehen? Gibt es vielleicht eine andere
> Moeglichkeit, Zeichenketten fuehrende-Nullen-resistent in Zahlen
> umzuwandeln? Ich lese auch gerne im Feinen Manual nach, aber wo?

>>> eval("071")
57

Alles klar?

ciao - pirx

-- 
Christian Tismer             :^)   <mailto:tismer at appliedbiometrics.com>
Applied Biometrics GmbH      :     Have a break! Take a ride on Python's
Kaiserin-Augusta-Allee 101   :    *Starship* http://starship.skyport.net
10553 Berlin                 :     PGP key -> http://pgpkeys.mit.edu
     we're tired of banana software - shipped green, ripens at home




More information about the Python-de mailing list