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