Re: ReadList, mix Words & Numbers?
- To: mathgroup at smc.vnet.net
- Subject: [mg30934] Re: ReadList, mix Words & Numbers?
- From: Robert Love <rlove at neosoft.com>
- Date: Thu, 27 Sep 2001 02:16:54 -0400 (EDT)
- Organization: Internet America (using Airnews.net!)
- References: <9oetdp$im0$1@smc.vnet.net> <9ojv4p$m6b$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Mariusz Jankowski wrote :
>Robert, here is the solution. I used the following approach - read the data
>as a list of records and use string operations to locate the numbers and
>extract.
I didn't catch the error in this method until I tried it for myself. Every number generated from a string representing a number in "Exponent" form fails to convert correctly. For example, a string of " -0.7623174679E-008" becomes -10.0722
Is there a way I can correctly convert strings of the form I have to numbers?
Thanks again for all assistance.
>In[19]:=
>rawdata = Flatten[ReadList["almanac.txt",
> {Record}]] ;
>
>
>This deletes the header records
>
>In[21]:=
>tmp = Select[rawdata, !StringMatchQ[#1, "*almanac*"] & ]
>
>
>Here I search each string for the character ":" and extract the number
>In[34]:=
>values = (ToExpression[StringDrop[#1,
> First[Flatten[StringPosition[#1, ":"]]]]] & ) /@ tmp
>
>Out[34]=
>{1, 0, -0.6150340397452159, 319488., 0.9654515552,
> -10.072193720509482, 5153.727051, 1.770381612241071,
> -1.702684969, 0.6520090636422935, -2.4944906649096104,
> 0., 99, 2, 0, -0.4199863658579357, 319488.,
> 0.9324469998, -10.224423843839208, 5153.597656,
> 0.6048908201090217, -2.027413647, 1.537113200919309,
> -5.244330671054458, -12.977810336677443, 99}
>
>
>Similarly, I extract the label
>
>In[35]:=
>labels =
> (StringTake[#1, First[Flatten[StringPosition[#1,
> ":"]]]] & ) /@ tmp
>
>Out[35]=
>{"ID:", "Health:", "Eccentricity:",
> "Time of Applicability(s):",
> "Orbital Inclination(rad):",
> "Rate of Right Ascen(r/s):", "SQRT(A) (m 1/2):",
> "Right Ascen at Week(rad):",
> "Argument of Perigee(rad):", "Mean Anom(rad):",
> "Af0(s):", "Af1(s/s):", "week:", "ID:", "Health:",
> "Eccentricity:", "Time of Applicability(s):",
> "Orbital Inclination(rad):",
> "Rate of Right Ascen(r/s):", "SQRT(A) (m 1/2):",
> "Right Ascen at Week(rad):",
> "Argument of Perigee(rad):", "Mean Anom(rad):",
> "Af0(s):", "Af1(s/s):", "week:"}
>
>Here I display the result
>
>In[38]:=
>Transpose[{labels, values}] // TableForm
>
>
>
>Good luck, Mariusz
>