Re: Reading from a file.
- To: mathgroup at smc.vnet.net
- Subject: [mg56708] Re: Reading from a file.
- From: Peter Pein <petsie at arcor.de>
- Date: Wed, 4 May 2005 00:33:56 -0400 (EDT)
- References: <d57h8g$pa3$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Namrata Khemka wrote:
> Hi everyone,
>
> I have the following input file:
>
> %Object Name : left asis
> 1 168 0.695873 6.544617 62.457849 82.505554
> 1 169 0.700040 8.332349 61.770844 82.268933
> 1 170 0.704207 9.848946 61.490948 82.065082
>
> %Object Name : right asis
> 2 168 0.695873 -6.179786 37.250156 86.780951
> 2 169 0.700040 -4.581314 36.861102 86.754218
>
> %Object Name : right asis
> 3 168 0.695873 -6.179786 37.250156 86.780951
> 3 169 0.695873 -6.179786 37.250156 86.780951
>
> I want to read this file in the form of a matrix (real numbers), so
> that the matrix has the
> following (eliminate the %Object line while reading):
>
> 1 168 0.695873 6.544617 62.457849 82.505554
> 1 169 0.700040 8.332349 61.770844 82.268933
> 1 170 0.704207 9.848946 61.490948 82.065082
> 2 168 0.695873 -6.179786 37.250156 86.780951
> 2 169 0.700040 -4.581314 36.861102 86.754218
> 3 168 0.695873 -6.179786 37.250156 86.780951
> 3 169 0.695873 -6.179786 37.250156 86.780951
>
>
> So the real numbers matrix is of size [7][6]
>
> I have tried quite a few things but nothing seems to be working.
>
> Thanks in advance for the help,
>
> Namrata
>
Hi Namrata,
it's not an elgant solution, but it works:
In[1]:=
readFile[name_String]:=Module[{result={},oneline,handle=OpenRead[name]},
If[handle==$Failed,Return[$Failed]];
While[True,
oneline=Read[handle,String];
If[oneline==$Failed,result=$Failed;Break[]];
If [oneline==EndOfFile,Close[handle];Break[]];
If[StringLength[oneline]>=1,
If[StringTake[oneline,1]!="%",
result=Append[result,
DeleteCases[ToExpression[
StringSplit[oneline," "]],Null]];
]]];
result
]
In[2]:=
readFile["test.txt"]//InputForm
Out[2]//InputForm=
{{1, 168, 0.695873, 6.544617, 62.457849, 82.505554},
{1, 169, 0.70004, 8.332349, 61.770844, 82.268933},
{1, 170, 0.704207, 9.848946, 61.490948, 82.065082},
{2, 168, 0.695873, -6.179786, 37.250156, 86.780951},
{2, 169, 0.70004, -4.581314, 36.861102, 86.754218},
{3, 168, 0.695873, -6.179786, 37.250156, 86.780951},
{3, 169, 0.695873, -6.179786, 37.250156, 86.780951}}
--
Peter Pein
Berlin