convert scientific integer to normal integer

Russell Blau russblau at hotmail.com
Tue Oct 5 18:14:16 CEST 2004


"wes weston" <wweston at att.net> wrote in message
news:yDz8d.667038$Gx4.100104 at bgtnsc04-news.ops.worldnet.att.net...
> les ander wrote:
> > Hi,
> > i have a file with lines like this:
> >   1.7000000e+01   2.4000000e+01   1.0000000e+00   8.0000000e+00
1.5000000e+01
> >   2.3000000e+01   5.0000000e+00   7.0000000e+00   1.4000000e+01
1.6000000e+01
> >   4.0000000e+00   6.0000000e+00   1.3000000e+01   2.0000000e+01
2.2000000e+01
> >   1.0000000e+01   1.2000000e+01   1.9000000e+01   2.1000000e+01
3.0000000e+00
> >   1.1000000e+01   1.8000000e+01   2.5000000e+01   2.0000000e+00
9.0000000e+00
> >
> > Notice that they are all integers.
> > What I want to do is write them out in a regular way, by which I mean
that the
> > output should look like this:
> > 17 24 1 9 15
> > 23 5 7 14 16
> > etc
> >
> > I tried the following but it did not work:
> > fp=open(argv[1])
> > for x in fp:
> >   xc=[int(e) for e in x.split()]
> >   print " ".join(xc)
> >
> >
> > any help would be much appreciated
>
> Les,
>  >>> x=eval('1.7000000e+01')
>  >>> x
> 17.0
>  >>>
> wes

Erm, yes, but there is almost always a better way than eval().

Note the following:

>>> float('1.700000e+01')
17.0
>>> int('1.700000e+01')

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in -toplevel-
    int('1.700000e+01')
ValueError: invalid literal for int(): 1.700000e+01
>>> int(float('1.70000e+01'))
17

This should be enough to allow you to parse your values, assuming you are
really sure that they are always going to be integers.


-- 
I don't actually read my hotmail account, but you can replace hotmail with
excite if you really want to reach me.





More information about the Python-list mailing list