Re: how to get string in sci. notation to a number?
- To: mathgroup at smc.vnet.net
- Subject: [mg124096] Re: how to get string in sci. notation to a number?
- From: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>
- Date: Mon, 9 Jan 2012 03:14:00 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jb2hum$5e0$1@smc.vnet.net> <op.v5phrszkqcgwdu@core2.lan>
On Tue, 29 Nov 2011 11:48:54 -0000, Oleksandr Rasputinov
<oleksandr_rasputinov at hmamail.com> wrote:
> On Tue, 29 Nov 2011 12:07:50 -0000, 1.156 <rob at piovere.com> wrote:
>
>> I've been able to get a text file with data into a list of strings
>> of the following form:
>>
>> {{"4.998865e+000", "9.564453e-006"},
>> {"5.630450e+000", "9.194384e-006"},
>> {"6.113276e+000", "8.134170e-006"}}
>>
>> After many hours I've really gotten nowhere except that it's most
>> likely done with ToExpression which works fine with simple decimal
>> numbers in string form. Must I really split up the strings, suck out the
>> exponents, and then multiply them out to be able to use these numbers in
>> a ListPlot?
>> Any hints would be appreciated.
>
> In place of "e", Mathematica uses "*^". When reading output from a
> Python program into Mathematica for analysis, I have used StringReplace
> to convert to valid Mathematica syntax followed by ToExpression; this
> can be faster and more convenient than Import in certain cases. However,
> if you are happy with your current approach and just want to finish the
> job, you can use e.g.:
>
> lst = {
> {"4.998865e+000", "9.564453e-006"},
> {"5.630450e+000", "9.194384e-006"},
> {"6.113276e+000", "8.134170e-006"}
> }
>
> Map[Sequence@@ImportString[#, "List", "Numeric" -> True] &, lst, {2}]
>
> {{4.99887, 9.56445*10^-6},
> {5.63045, 9.19438*10^-6},
> {6.11328, 8.13417*10^-6}}
Perhaps it is not worth reviving this old thread, but I noticed another
way to perform this task which may be of interest given the relatively
frequent requirement for importation of numbers in this format into
Mathematica:
Map[Internal`StringToDouble, lst, {2}]
Internal`StringToDouble seems to work in Mathematica 7 and 8. It exists in
version 5.2 but appears to do nothing. I didn't try version 6.